Сообщение AJAX строкового массива JavaScript в JsonResult как List <string> Всегда возвращает нуль?
Я пытаюсь создать массив строк в JavaScript и получить результаты в списке строк в методе действий. Ниже приведен пример моего JavaScript. Я использую jQuery 1.4.2. Проблема заключается в том, что мой список в методе действий всегда показывает NULL. Будет ли строковый массив JavaScript неверным для строкового списка на С#?
var test = ['test1', 'test2'];
var parms = {
var1: 'some string',
var2: test
};
$.ajax({
type: "POST",
url: "/Test/JSONTestAction",
async: false,
data: parms,
dataType: "json",
success: function(data) {
// success
}
});
Затем мой JsonResult выглядит следующим образом:
public JsonResult JSONTestAction(string var1, List<string> var2)
{
// var2 is always NULL -- not good
return Json(new { test = "test" });
}
Ответы
Ответ 1
Я столкнулся с такой же проблемой после обновления до jQuery 1.4.2. Вы можете найти решение здесь (в разделе Ajax).
Добавление традиционного: true в параметрах ajax должно работать.
$.ajax({
type: "POST",
traditional: true,
url: "/Test/JSONTestAction",
async: false,
data: parms,
dataType: "json",
success: function(data) {
// success
}
});
Ответ 2
Это изменение должно было сделать собственное поведение лучше для пользователей PHP/Rails, вы можете прочитать о параметрах, которые меняются здесь больше.
Вы можете включить его для запроса следующим образом:
$.ajax({
//Stuff...
traditional:true
});
Или глобально, как это (нужно только запустить один раз перед запуском любых запросов):
jQuery.ajaxSettings.traditional = true;