jQuery dan ASP.NET MVC: Menyiarkan Susunan Objek Kompleks dengan JSON
Masalah:
Bagaimana anda boleh menghantar pelbagai objek kompleks kepada pengawal ASP.NET MVC daripada jQuery permintaan AJAX? Apakah parameter yang harus diterima oleh tindakan pengawal?
Penyelesaian:
Untuk menyiarkan tatasusunan objek kompleks ke pengawal menggunakan jQuery dan JSON, ikut langkah berikut:
Sirikan tatasusunan ke JSON:
Gunakan JSON.stringify() untuk menukar tatasusunan objek kepada rentetan JSON.
Tetapkan pengepala permintaan:
Nyatakan pengepala Jenis Kandungan kepada aplikasi/json; charset=utf-8.
Gunakan kaedah $.ajax():
Buat permintaan AJAX menggunakan $.ajax() kaedah dan menyediakan data JSON sebagai data parameter.
Tindakan Pengawal:
Hias tindakan pengawal anda dengan atribut tersuai (JsonFilter) untuk menyahsiri data JSON. Atribut harus menyatakan nama parameter dan jenis data JSON.
Atribut Tersuai (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; } } }
Contoh:
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' }); }
Tindakan Pengawal:
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... }
Atas ialah kandungan terperinci Bagaimana untuk Menyiarkan Susunan Objek Kompleks dari jQuery ke Pengawal ASP.NET MVC Menggunakan JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!