MVC3和x2B;jquery post javascript对象数组

MVC3和x2B;jquery post javascript对象数组,jquery,asp.net-mvc,model-binding,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) {

模型绑定的工作方式与我想象的不一样。我以为我可以制作一个对象数组并将其传递给$.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");
}
公共行动结果发送人(IList人){
//做事
返回部分视图(“人员”);
}

但是参数为空。如何正确执行此操作?

您需要确保以下几点:

根据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数据的结构与模型数据之间存在不匹配。

可能存在重复