当我像这样使用 jQuery 发送一个 int 列表时:
$.ajax('@Url.Action("Execute")', {
type: 'POST',
data: {
pkList: [1,2,3]
}
});
然后 jQuery 将转换 pkList 对象并通过邮寄方式发送它,如下所示:
pkList[]:1
pkList[]:2
pkList[]:3
如果服务器是 PHP 但我使用 Asp.NET MVC3 并尝试使用默认模型绑定器获取这些值,这会很好:
public ActionResult Execute(ICollection<int> pkList)
但是pkList总是为null,好像默认的model binder无法绑定。
我该如何正确解决这个问题?
添加的 解决方案
我使用 Darin Dimitrov 的解决方案traditional
在 jQuery 中设置选项:
$.ajax('@Url.Action("Execute")', {
type: 'POST',
traditional: true,
data: {
pkList: [1,2,3]
}
});
现在 jQuery 不再添加[]
参数了,它们是这样发送的:
pkList:1
pkList:2
pkList:3
并且 MVC 默认模型绑定器正确获取值。
希望这可以帮助某人。