将选择的多选择值传递给控制器动作
本文关键字:选择 控制器 值传 | 更新日期: 2023-09-27 18:16:05
我试图将选定的多选择列表的选定值发送到我的控制器中的操作。当我打印到控制台时,我已经验证了val()确实向我显示了一个选定值的数组,如["33","175"],但Action的参数始终为空。我尝试将参数类型更改为对象,并验证它不是null,但我无法解析值。有什么建议吗?请和谢谢!
Ajax调用:
$(".chosen-select").on("change", function (event, params) {
console.log($(".chosen-select").val());
$.ajax({
url: '@Url.Action("BDOReferralSourcesTableHTML","ReferralNetwork")',
type: 'GET',
dataType: 'json',
cache: false,
data: { bdoIds: $(".chosen-select").val() },
success: function (response) {
if (response.length > 0) {
alert(response);
}
else {
alert("response length zero");
}
}
});
});
控制器动作:
public ActionResult BDOReferralSourcesTableHTML(string[] bdoIds)
{
return Content("<b>test</b>", "text/html");
}
您必须将ajax的traditional
属性设置为true
:
$.ajax({
url: '@Url.Action("BDOReferralSourcesTableHTML","ReferralNetwork")',
type: 'GET',
dataType: 'json',
cache: false,
traditional:true,
data: { bdoIds: $(".chosen-select").val() },
success: function (response) {
if (response.length > 0) {
alert(response);
}
else {
alert("response length zero");
}
}
});
你也可以全局设置它,这样就不需要在每次ajax调用中指定它:
$.ajaxSetup({
traditional:true
});
更新:
设置 traditional:true
:
jQuery 1.4在
在<<p> strong> jQuery 1.3 ,jQuery.param
中增加了对嵌套参数序列化的支持,采用了PHP推广的方法,并得到Ruby on Rails的支持。例如,{foo: ["bar", "baz"]}
将序列化为"foo [] = bar& foo[] =巴兹"。{foo: ["bar", "baz"]}
被序列化为"foo = bar& foo =巴兹"。但是,无法使用这种方法对单元素数组进行编码。如果您需要旧的行为,可以通过设置传统的Ajax设置(全局通过jQuery.ajaxSettings.traditional
或逐个通过传统标志)来重新启用它。
详情可以在Ajax一节中看到jQuery 1.4发布-完整发布说明。
您也可以在这里看到的解释。jQuery 1.4打破了ASP。带有数组参数的。MVC动作
参见:jQuery 1.4打破ASP。. NET MVC参数张贴