Проблемы с получением ASP.NET MVC3 для связывания моего сложного объекта JSON, который содержит список.MVC3 Complex JSON List Binding
Вот структура, которая у меня есть для моих объектов.
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!
}
}
Как я уже сказал, первый объект заполнен, и все данные есть, когда я отлаживаю и перешагиваю. Если я передаю два объекта в массиве Objects
в объекте JSON, я вижу в контроллере Count
из 2, но Custom2Id
и SubItemId
пустые. Что дает?
Когда я указываю contentType
из 'application/json'
в своем вызове $.ajax
, MVC жалуется на передаваемые данные. Также попытался расщепить параметр model
в методе MVC на два отдельных параметра, но это не помогает.
Любая помощь очень ценится - этот человек меня превзошел!
спасибо, это помогло много :)! – Rookian
После того, как часы искали полнофункциональный код, это решило мою проблему! Благодаря!! –