【发布时间】:2011-10-28 16:05:39
【问题描述】:
当我像这样使用 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 的解决方案,在 jQuery 中设置了 traditional 选项:
$.ajax('@Url.Action("Execute")', {
type: 'POST',
traditional: true,
data: {
pkList: [1,2,3]
}
});
现在 jQuery 不再将 [] 添加到参数中,它们的发送方式如下:
pkList:1
pkList:2
pkList:3
并且 MVC 默认模型绑定器正确获取值。
希望这对某人有所帮助。
【问题讨论】:
标签: jquery asp.net-mvc-3 defaultmodelbinder