有問題讓ASP.NET MVC3綁定我包含列表的複雜JSON對象。MVC3複雜的JSON列表綁定
這是我對我的物體的結構。
public class PageModel
{
public PageModel() { }
public CustomObject1 CustomObject { get; set; }
public IEnumerable<CustomObject2> Objects { get; set; }
}
public class CustomObject1
{
public CustomObject1() { }
[Required]
public int CustomId1 { get; set; }
public string CustomName { get; set; }
}
public class CustomObject2
{
public CustomObject2() { }
[Required]
public int Custom2Id { get; set; }
public CustomObject3 SubItem { get; set; }
public int SubItemId { get; set; }
}
你可以假設CustomObject3
是結構相似 - 不需要重複又由階級,所以我想你可以用你的想象力:)
下面是使用Javascript/jQuery的,使POST調用(假設所有的JS導致這一正確的數據提供):
//$obj1 has all data for the first object
var firstObj = { };
firstObj.CustomId1 = $obj1.Id;
firstObj.CustomName = $obj1.Name;
var i = 0;
//$objects is an array with all the data
$.each($objects, function() {
objsArray[i] = {
Custom2Id: $(this).Id,
SubItemId: $(this).itemId
};
++i;
});
$.ajax({
type: 'POST',
url: '/Action/Method',
data: { CustomObject: firstObj, Objects: objsArray },
//Success/error handlers here
});
最後(我知道,很長一段代碼),這裏的方法的概述,我有:
public class ActionController : Controller {
public JsonResult Method(PageModel model) {
//Gets here - model.CustomObject is filled correctly, and model.Objects has a correct count of whatever data I passed to the method - but all of the properties are empty!
}
}
正如我所說的,第一個對象被填充,所有的數據在那裏,當我調試,並通過。如果我在JSON對象的Objects
數組中傳遞兩個對象,我在控制器中看到一個爲Count
,但Custom2Id
和SubItemId
爲空。是什麼賦予了?
當我在我的$.ajax
調用中指定contentType
的'application/json'
時,MVC會抱怨傳遞的數據。還嘗試將MVC方法中的model
參數拆分爲兩個單獨的參數,但它沒有幫助。
任何幫助非常感謝 - 這一個讓我難住!
感謝這有助於很多:)! – Rookian 2012-11-28 17:02:23
經過數小時尋求完整功能的代碼,這解決了我的問題!謝謝!! – 2013-08-12 17:22:22