首页 > 解决方案 > 如何使用jquery将逗号分隔值从视图发送到控制器

问题描述

在我的 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 表示)声明为字符串。

标签: jqueryajaxasp.net-mvc

解决方案


好吧,如果您也共享代码的控制器端会更好。但是,我建议您检查两件事。

使用 console.log(Discount.BrandId) 确保该值确实是逗号分隔的形式(您在评论中提到您确定没问题)。

这让我们指出第二点,在您的控制器中,您是List<string>用来保存此参数的值还是string. 我建议在 JS 代码中创建一个 BrandID 数组,然后将其发布到控制器并尝试获取这些值List<string>


推荐阅读