首頁 >後端開發 >C++ >如何使用 JSON 將複雜物件陣列從 jQuery 發佈到 ASP.NET MVC 控制器?

如何使用 JSON 將複雜物件陣列從 jQuery 發佈到 ASP.NET MVC 控制器?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-02 15:01:37251瀏覽

How to Post an Array of Complex Objects from jQuery to an ASP.NET MVC Controller Using JSON?

jQuery 和ASP.NET MVC:使用JSON 發布複雜對像數組

問題:

如何將一組複雜物件從ASP.NET MVC 控制器傳遞到jQuery AJAX請求?控制器操作應該接受哪些參數?

解決方案:

要使用 jQuery 和 JSON 將複雜物件陣列發佈到控制器,請按照以下步驟操作:

  1. 將陣列序列化為JSON:

    使用 JSON.stringify() 將物件陣列轉換為 JSON 字串。

  2. 設定請求標頭:

    指定Content-Type header為application/json; charset=utf-8.

  3. 使用$.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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn