jQuery と ASP.NET MVC: JSON を使用した複雑なオブジェクトの配列のポスト
問題:
複雑なオブジェクトの配列を ASP.NET MVC コントローラーに渡すにはどうすればよいですか? jQuery AJAX リクエストですか?コントローラー アクションはどのパラメーターを受け入れる必要がありますか?
解決策:
jQuery と JSON を使用して複雑なオブジェクトの配列をコントローラーにポストするには、次の手順に従います:
配列をシリアル化して、 JSON:
JSON.stringify() を使用して、オブジェクトの配列を JSON 文字列に変換します。
リクエスト ヘッダーを設定します:
application/json に Content-Type ヘッダーを指定します。 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 中国語 Web サイトの他の関連記事を参照してください。