jQuery 和ASP.NET MVC:使用JSON 發布複雜對像數組
問題:
如何將一組複雜物件從ASP.NET MVC 控制器傳遞到jQuery AJAX請求?控制器操作應該接受哪些參數?
解決方案:
要使用 jQuery 和 JSON 將複雜物件陣列發佈到控制器,請按照以下步驟操作:
將陣列序列化為JSON:
使用 JSON.stringify() 將物件陣列轉換為 JSON 字串。
設定請求標頭:
指定Content-Type header為application/json; charset=utf-8.
使用$.ajax()方法:
使用$.ajax() 創建AJAX 請求方法並提供JSON 數據作為數據控制器操作:
使用自訂屬性(JsonFilter) 裝飾控制器操作以反序列化JSON 資料。此屬性應指定參數名稱和 JSON 資料類型。自訂屬性(JsonFilter):
public class JsonFilter : ActionFilterAttribute { public string Param { get; set; } public Type JsonDataType { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Request.ContentType.Contains("application/json")) { string inputContent; using (var sr = new StreamReader(filterContext.HttpContext.Request.InputStream)) { inputContent = sr.ReadToEnd(); } var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); filterContext.ActionParameters[Param] = result; } } }
範例:
JavaScript:
function getplaceholders() { var widgets = []; // ... populate the array $.ajax({ url: '/portal/Designer.mvc/SaveOrUpdate', type: 'POST', dataType: 'json', data: JSON.stringify(widgets), contentType: 'application/json; charset=utf-8' }); }
控制器操作:
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... }
以上是如何使用 JSON 將複雜物件陣列從 jQuery 發佈到 ASP.NET MVC 控制器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!