ASP.NET MVC コントローラーでの JSON と jQuery を使用した複雑なオブジェクトの逆シリアル化
ASP.NET MVC では、JSON から複雑なオブジェクトを逆シリアル化できます。挑戦してください。この質問は、ユーザーが複雑なオブジェクトの配列を jQuery からコントローラー アクションに渡そうとするこの問題に対処します。
これに対処するために、ソリューションは[JsonFilter](https://web.archive.org/web/20120313075719/http://www.asp.net/web-api/overview/advanced/sending-and-receiving-json-in-aspnet-web- API) カスタム属性。この属性は、JSON リクエストを適切なタイプに逆シリアル化し、アクション パラメーターにバインドします。
更新されたビュー コード
// 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); } });
変更されたコントローラー コード
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets) { // ... code to handle the updated widgets ... }
カスタム 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; } } }
このソリューションは、JSON 配列をコントローラー内で厳密に型指定されたリストに効果的に逆シリアル化し、開発者が複雑なオブジェクトを簡単に操作できるようにします。
以上がASP.NET MVC コントローラーで複雑な JSON オブジェクトを厳密に型指定されたリストに逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。