我正在尝试在JavaScript中构建一个字符串数组,并将结果放在action方法的字符串列表中。以下是我的JavaScript的样子。我正在使用jQuery 1.4.2。问题是我在动作方法中的List总是显示NULL。 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" });
}
答案 0 :(得分:54)
我在更新到jquery 1.4.2后面临同样的问题。您可以找到解决方案here(在Ajax部分中)。
添加传统:ajax选项中的true应该有效。
$.ajax({
type: "POST",
traditional: true,
url: "/Test/JSONTestAction",
async: false,
data: parms,
dataType: "json",
success: function(data) {
// success
}
});
答案 1 :(得分:7)
此更改旨在使PHP / Rails用户you can read about the params changes more here的本地行为更好。
您可以按照以下请求启用它:
$.ajax({
//Stuff...
traditional:true
});
或像这样全局(只需要在触发任何请求之前运行一次):
jQuery.ajaxSettings.traditional = true;