Привязка сложного списка JSON MVC3

Возникли проблемы с получением ASP.NET 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 call (предположим, что все 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 на два отдельных параметра, но это не помогает.

Мы очень признательны за любую помощь — это поставило меня в тупик!

8
задан CAbbott 19 March 2012 в 14:13
поделиться