Я пытаюсь получить выбранные значения в моем поле выбора. Через вызов 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
. Если он проходит в разделенной запятой строке, я могу сортировать ее на стороне сервера. или массив строк лучше.
У меня была та же проблема, что и у вас. Я нашел ответ в следующей ссылке.
В основном вам нужно добавить следующую строку, и значения передаются как массив.
jQuery.ajaxSettings.traditional = true;
Ошибка в конфигурации $ 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);
}
});
Я бы использовал массив 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
Надеюсь, что это поможет вам!
Вместо использования 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);
}
});