我认为 MVC3 默认可以将 JSON 数据绑定到模型。
但是这段代码
服务器:
[HttpPost]
public ActionResult Save(IList<int> IDs)
{
return null;
}
客户:
$.post('@Url.Action("Save", "Users")', {'IDs' : [1, 2, 3]}, function() {});
不工作。为什么 ??
我认为 MVC3 默认可以将 JSON 数据绑定到模型。
但是这段代码
服务器:
[HttpPost]
public ActionResult Save(IList<int> IDs)
{
return null;
}
客户:
$.post('@Url.Action("Save", "Users")', {'IDs' : [1, 2, 3]}, function() {});
不工作。为什么 ??
您需要将数据作为 application/json 发送:
$.ajax({
type: 'post',
url: '/Users/Save'
data: JSON.stringify({'IDs' : [1, 2, 3]}),
contentType: 'application/json; charset=utf-8',
success: function() {
// ...
}
});
您的代码发送IDs[]=1&IDs[]=2&IDs[]=3
.
你需要发送IDs=1&IDs=2&IDs=3
。
设置traditional:true
参数以使用传统的参数序列化样式。
$.ajax({
url: '@Url.Action("Save", "Users")',
type: 'post',
data: {'IDs' : [1, 2, 3]},
traditional:true,
success: function() {
// ...
}
})
这可能与我前段时间遇到的问题相同。查看这个 SO 问题Post Array as JSON to MVC Controller
你必须申请JSON.stringify
$.post('@Url.Action("Save", "Users")', JSON.stringify({'IDs' : [1, 2, 3]}), function() {});