MVC3 + jquery发布javascript对象数组

时间:2013-07-19 22:50:57

标签: jquery asp.net-mvc model-binding

模型绑定不像我想象的那样工作。我以为我可以创建一个对象数组并将其传递给$ .post但是没有,不那么容易。

这就是我想做的事情

var a=new Array();
a[0]={
    Name:"Eric",
    Email:"eric@yahoo.com"
}

a[1]={
    Name:"Peter",
    Email:"peter@gmail.com"
}

$.post("/Home/SendPersons", a, function (data, status) {
    $("#someid").html(data);
});

并在我的控制器中:

public ActionResult SendPersons(IList<Person> persons) {
    //Do stuff
    return PartialView("Persons");
}

但参数为null。我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:2)

您需要确定的几件事情:

根据Meryovi提供的链接,确保您尝试绑定的字段具有所有相应的{ get; set; }字段,否则ModelBinder将无效。 (如果您希望有人看一下,您可以在您的问题中发布您的人物模型。)

此外,请确保您发送的是真正的JSON请求。您可以通过编写以下代码来完成此操作:

$.ajax({
    url: '/Home/SendPersons',
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json',
    data: JSON.stringify({ persons: a }),
    success: function (data) {
        $('#someid').html(data);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        // TODO - Implement if an error occurs.
    }
});

现代浏览器将实现stringify方法。否则,如果您需要支持旧浏览器,请使用Nuget引入JSON2,它将提供stringify方法。

此外,作为第三次完整性检查,请查看您的数据。通常,JSON数据的结构与模型数据之间存在不匹配。