Я пытаюсь создать массив строк в JavaScript и получить результаты в списке строк в методе действия. Ниже то, на что похож мой JavaScript. Я использую jQuery 1.4.2. Проблемой является мой Список в методе действия, всегда показывает ПУСТОЙ УКАЗАТЕЛЬ. Разве массив строк JavaScript не отобразится корректный на список строк в C#?
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" });
}
Я столкнулся с той же проблемой после обновления до 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
}
});
Это изменение было сделано для улучшения нативного поведения пользователей PHP / Rails, вы можете прочитать об изменениях параметров здесь .
Вы можете включить его для каждого запроса следующим образом:
$.ajax({
//Stuff...
traditional:true
});
Или глобально, как это (нужно выполнить только один раз, прежде чем запускать какие-либо запросы):
jQuery.ajaxSettings.traditional = true;