Jquery Multiselect到MVC4 Action

时间:2013-09-24 09:07:18

标签: jquery asp.net-mvc asp.net-mvc-4 multi-select

我正在尝试接收多选框的选定值。通过Ajax调用。

以下是我的测试操作

public ActionResult MultiSelect(String[] test)
{
    String[] arrayornot = test; //null being recieved. or the string if hardcoded
}

Jquery

    alert($('#county').val()); // London, Brim
    $.ajax({
        url: '@Url.Action("MultiSelect", "APITest")',
        type: 'GET',
        cache: false,
        data: { test: $('#county').val()},
        success: function (result) {
            $('#myDiv').html(result);
        }
    });

如果我将其硬编码为字符串,它可以正常工作。使用String[]String端点。如果它传入一个逗号分隔的字符串,我可以在服务器端对它进行排序。或字符串数​​组更好。

4 个答案:

答案 0 :(得分:2)

错误是$ Ajax配置设置方法传统:true然后你的问题就解决了。

var selectedItems = $('#county')。val();

$.ajax({

    url: '@Url.Action("MultiSelect", "APITest")',

    type: 'POST',

    cache: false,

    traditional: true, 

    data: { test: JSON.stringify(selectedItems)},

    success: function (result) {
        $('#myDiv').html(result);
    }

});

答案 1 :(得分:1)

我会使用javascript数组并转换为JSON字符串

var selectedItems=$('#county').val(); // returns the array of selected items

然后使用JSON.stringify方法

$.ajax({
        url: '@Url.Action("MultiSelect", "APITest")',
        type: 'GET',
        cache: false,
        data: { test: JSON.stringify(selectedItems)},
        success: function (result) {
            $('#myDiv').html(result);
        }
    });

JSON.Stringify在IE 7中不可用。请使用JSON2.js

希望这会对你有帮助!

答案 2 :(得分:1)

而不是在方法参数中使用string[](字符串数组)。使用string参数。并将此逗号分隔的字符串转换为服务器端的数组。

使用以下代码,

服务器端,

    public ActionResult MultiSelect(string test)
    {
        return View();
    }

JQuery Code,

$.ajax({
                url: '@Url.Action("MultiSelect", "OrderCreation")',
                type: 'GET',
                cache: false,
                data: { test: $('#county').val().toString() },
                success: function (result) {
                    $('#myDiv').html(result);
                }
            });

答案 3 :(得分:1)

我遇到了同样的问题。我在以下链接中找到了答案。

http://dovetailsoftware.com/clarify/kmiller/2010/02/24/jquery-1-4-breaks-asp-net-mvc-actions-with-array-parameters

基本上你需要做的是添加以下行,值将作为数组传递。

jQuery.ajaxSettings.traditional = true;