如何使用jquery将逗号分隔的值从视图发送到控制器
在我的MVC应用程序中,我试图使用jquery将值从.cshtml页面发送到控制器。我在jquery中的按钮单击上编写了以下代码,以从多选下拉列表中检索所选值如何使用jquery将逗号分隔的值从视图发送到控制器,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,在我的MVC应用程序中,我试图使用jquery将值从.cshtml页面发送到控制器。我在jquery中的按钮单击上编写了以下代码,以从多选下拉列表中检索所选值 var selBrand = $("#BrandId option:selected"); selBrand.each(function () { bradValues += ',' + $(this).val(); }); 它以字符串格式显示逗号分隔的值,如',1,2,3',我可以在“警报”对话框中看到它。然后,我尝试通过变量
var selBrand = $("#BrandId option:selected");
selBrand.each(function () {
bradValues += ',' + $(this).val();
});
它以字符串格式显示逗号分隔的值,如',1,2,3',我可以在“警报”对话框中看到它。然后,我尝试通过变量将此值发送到控制器:
var Discount =
{
DiscountType: $('#DiscountType').val(),
DiscountOn: $('#DiscountOn').val(),
BrandId: bradValues,
}
$.ajax({
type: "POST",
url: '/Discount/Create',
data: Discount,
contentType: "application/json; charset=utf-8",
//dataType: "html",
processData: true,
success: function (response) {
alert('Ok');
},
failure: function (response) {
alert(response.responseText);
}
});
但问题是,当我检查控制器时,我可以看到像“1”这样的单个值,而不是逗号分隔的字符串。在模块中,我将BrandId(由bradValues表示)声明为字符串。如果您也共享代码的控制器端,那就更好了。不过,我建议您检查两件事 使用console.log(Discount.BrandId)确保值确实是逗号分隔的形式(您在注释中提到,您确信这是可以的) 这就剩下第二点,在您的控制器中,您是否使用
列表
来保存此参数的值或字符串
。我建议在JS代码中创建一个BrandID数组,然后将其发布到controller,并尝试在列表中获取这些值
相反。为什么不var-bradValues=[];selBrand.each(函数(){bradValues.push($(this.val());})代码>不工作。相同的结果。然后检查网络选项卡,查看是否发送了预期的内容,然后将请求转储到服务器上。当我通过警报检查值时,它正确地显示逗号分隔的字符串,如1,2,3,但控制器仅显示第一个值。“BrandId:bradValues”行中是否有任何问题?因为逗号部分总是被丢弃。我的控制器代码相当简单:[HttpPost]公共操作结果创建(折扣){try{return RedirectToAction(“Index”);}catch{return View();}