如何使用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',我可以在“警报”对话框中看到它。然后,我尝试通过变量

在我的MVC应用程序中,我试图使用jquery将值从.cshtml页面发送到控制器。我在jquery中的按钮单击上编写了以下代码,以从多选下拉列表中检索所选值

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();}