Menyahsiri Objek Kompleks dengan JSON dan jQuery dalam Pengawal ASP.NET MVC
Dalam ASP.NET MVC, menyahsiri objek kompleks daripada JSON boleh menjadi cabaran. Soalan ini menangani isu ini, di mana pengguna cuba menghantar pelbagai objek kompleks daripada jQuery kepada tindakan pengawal.
Untuk menangani ini, penyelesaian itu memanfaatkan [JsonFilter](https://web.archive.org/web/20120313075719/http://www.asp.net/web-api/overview/advanced/sending-and-receiving-json-in-aspnet-web- api) atribut tersuai. Atribut ini menyahsiri permintaan JSON ke dalam jenis yang sesuai dan mengikatnya pada parameter tindakan.
Kod Paparan Dikemas Kini
// Serialize the results into a JSON object var postData = { widgets: results }; // Send the JSON data to the controller $.ajax({ url: '/portal/Designer.mvc/SaveOrUpdate', type: 'POST', dataType: 'json', data: $.toJSON(widgets), contentType: 'application/json; charset=utf-8', success: function(result) { alert(result.Result); } });
Kod Pengawal Diubah Suai
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... code to handle the updated widgets ... }
Penapis Json Tersuai Atribut
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; } } }
Penyelesaian ini secara berkesan menyahsiri tatasusunan JSON menjadi senarai ditaip kuat dalam pengawal, membolehkan pembangun memanipulasi objek kompleks dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk Menyahseri Objek JSON Kompleks ke dalam Senarai Ditaip Kuat dalam Pengawal ASP.NET MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!