JSON 和jQuery:將複雜數組傳遞給ASP.NET MVC 控制器
在我們需要將複雜物件數組傳送到的場景中對於控制器操作,必須考慮客戶端和伺服器端程式碼之間的相容性。讓我們深入研究 Steve Gentile 所描述的解決此挑戰的方法。
客戶端處理
jQuery 程式碼:
function getplaceholders() { // Collect data into an array var results = new Array(); ... var postData = { widgets: results }; // Send data to the controller with JSON serialization $.ajax({ url: '/portal/Designer.mvc/SaveOrUpdate', ... data: $.toJSON(widgets), ... }); }
此處,資料被收集到一個陣列中,包裝在一個 JSON物件中,並序列化以傳輸到server.
控制器操作配置
ASP.NET MVC 控制器操作:
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)
[JsonFilter] 屬性自訂要接收的操作JSON 資料。它定義參數名稱(「小部件」)並指定預期的 JSON 資料類型 (List
自訂JSON 過濾器屬性
public class JsonFilter : ActionFilterAttribute { ... public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Request.ContentType.Contains("application/json")) { // Deserialize JSON data from request body string inputContent = ...; var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); // Assign the deserialized object to the specified parameter filterContext.ActionParameters[Param] = result; } } }
JsonFilter 攔截JSON 內容類型的請求,使用Json.NET 的JsonConvert 類反序列化JSON 數據,並分配JSON 數據,並分配結果到適當的操作參數。
透過利用這種方法,我們有效地在客戶端資料和伺服器端操作之間建立通信,允許控制器處理以 JSON 格式接收的複雜物件數組。
以上是如何有效地將複雜的 JSON 陣列從 jQuery 傳遞到 ASP.NET MVC 控制器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!