將複雜物件陣列傳遞到ASP.NET MVC 控制器
在此場景中,您尋求將物件陣列傳遞給控制複雜器動作。為此,需要執行幾個步驟。
準備視圖
問題中提供的程式碼已經準備了一個物件陣列。這裡的關鍵是將這個陣列轉換為控制器可以解析的 JSON 格式。為此,請使用jQuery 庫中的$.toJSON() 函數,如解決方案改進的視圖程式碼所示:
function getplaceholders() { // ... var postData = { widgets: results }; $.ajax({ // ... data: $.toJSON(widgets), // ... }); }
裝飾控制器操作
為了讓控制器動作接受並處理JSON數據,需要用自訂屬性來修飾。在本例中,我們使用 JsonFilter 屬性:
[JsonFilter(Param = "widgets", JsonDataType = typeof(List<PageDesignWidget>))] public JsonResult SaveOrUpdate(List<PageDesignWidget> widgets)
Param 屬性指定將接收 JSON 資料的參數名稱,JsonDataType 定義反序列化所需的資料類型。
自訂屬性功能
JsonFilterAttribute 實作攔截 HTTP 請求並檢查是否包含 JSON 內容。如果是這樣,它會使用 Json.NET 中的 JsonConvert.DeserializeObject 將 JSON 反序列化為指定的資料類型,並將其指派給對應的操作參數。
public class JsonFilter : ActionFilterAttribute { // ... public override void OnActionExecuting(ActionExecutingContext filterContext) { // ... var result = JsonConvert.DeserializeObject(inputContent, JsonDataType); filterContext.ActionParameters[Param] = result; } }
按照以下步驟,您可以成功傳遞複雜的陣列物件從您的視圖到您的 ASP.NET MVC 控制器。
以上是如何使用 JSON 將複雜物件陣列傳遞到 ASP.NET MVC 控制器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!