У меня есть модель
public class Foo{
public int Id{get;set;}
public string Name {get; set;}
public DateTime Date {get; set;}
public bool IsActive {get;set;}
public List<Item> Items {get;set;}
}
public class Item{
public int Id {get;set;}
public string Name {get; set;}
public Foo Foo {get;set;}
}
И в моем JavaScript я делаю это:
var items = new Array();
$("#itemsSelector").each(function () {
items.push({Id: $(this).val(), Name: $(this).text() })
}
var id = $("#id").val();
var title = $("#title").val();
var date = $("#dateTimePicker").val();
var isActive = $("#msActive").val();
$.post("SaveFoo", {Id: id, Name:title, Date:date, IsActive: isActive, Items:items })
Подпись метода действия выглядит так:
[HttpPost]
public JsonResult SaveFoo(Foo foo) {
// Now. here it passes correct Id, Name, Date and bool parameter
// And even passes the correct number of Foo.Items
// The only thing that bothers me -
// all the properties of every Item is either null or zero!
}
Почемуэто происходит?Что я делаю неправильно?Как передать массив объектов в действие?Я пытался использовать jquery.serialize()
и serializeArray()
и даже $.toDictionary()
метод, описанный здесь .
Это не помогает