模型绑定不像我想象的那样工作。我以为我可以创建一个对象数组并将其传递给$ .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。我该如何正确地做到这一点?
答案 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数据的结构与模型数据之间存在不匹配。