gpt4 book ai didi

jquery - 如何使用 jQuery 将 int 列表发送到 ASP.net MVC 默认模型绑定(bind)器

转载 作者:行者123 更新时间:2023-12-03 21:58:16 25 4
gpt4 key购买 nike

当我像这样使用 jQuery 发送 int 列表时:

$.ajax('@Url.Action("Execute")', {
type: 'POST',
data: {
pkList: [1,2,3]
}
});

然后 jQuery 将转换 pkList 对象并通过 post 发送它,如下所示:

pkList[]:1
pkList[]:2
pkList[]:3

如果服务器是 PHP,但我使用 Asp.NET MVC3 并尝试使用默认模型绑定(bind)器获取这些值,那就没问题了:

public ActionResult Execute(ICollection<int> pkList)

但是pkList始终为null,看来默认的模型绑定(bind)器无法绑定(bind)它。

如何正确解决这个问题?

<小时/>

添加 解决方案

我使用了 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 默认模型绑定(bind)器正确获取值。

希望这对某人有帮助。

最佳答案

您可以使用 JSON 请求,因为它允许您发送您想要的任何复杂对象:

$.ajax({
url: '@Url.Action("Execute")',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ pkList: [1, 2, 3] }), // you could throw any javascript object you like here
success: function(result) {
// process the results
}
});

JSON.stringify 方法是在现代浏览器中内置的,如果您想支持旧版浏览器,您可以包含 json2.js脚本到您的网站。

要回答您的问题,您可以使用设置 traditional: true 选项来指示 jQuery 回退到传统参数序列化,因为这在 jQuery 1.4 中已发生变化,并且如果您使用的是更高版本,您可以切换回参数序列化的方式:

$.ajax({ 
url: '@Url.Action("Execute")',
type: 'POST',
data: {
pkList: [1, 2, 3]
},
traditional: true
});

关于jquery - 如何使用 jQuery 将 int 列表发送到 ASP.net MVC 默认模型绑定(bind)器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931832/

25 4 0
文章推荐: jQuery UI Datepicker - 如何更改 Datepicker HTML
文章推荐: jQuery :not() selector combined with Attribute Contains selector
文章推荐: jQuery On