Jquery Multiselect to MVC4 Action

0

Я пытаюсь получить выбранные значения в моем поле выбора. Через вызов 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. Если он проходит в разделенной запятой строке, я могу сортировать ее на стороне сервера. или массив строк лучше.

Теги:
asp.net-mvc
multi-select
asp.net-mvc-4

4 ответа

1
Лучший ответ

У меня была та же проблема, что и у вас. Я нашел ответ в следующей ссылке.

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

В основном вам нужно добавить следующую строку, и значения передаются как массив.

jQuery.ajaxSettings.traditional = true;

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

Я бы использовал массив 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

Надеюсь, что это поможет вам!

  • 0
    Я попробую, но я должен спросить, в чем разница между SelectedItems и SelectedArray.i я думал, что элементы были массивом: S Возможно, именно здесь я ошибся.
  • 0
    @ Doomsknight, Это прекрасно :) Я изменил свой ответ. Split также возвращает массив :)
Показать ещё 2 комментария
1

Вместо использования string[] (строковый массив) в параметре метода. используйте параметр string. и преобразовать эту строку, разделенную запятой, в массив на стороне сервера.

используйте следующий код,

Серверная сторона,

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

Код JQuery,

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню