JavaScript的string数组的AJAX Post作为List <String>的JsonResult总是返回空?

我想在JavaScript中build立一个string数组,并得到结果在行动方法的string列表。 以下是我的JavaScript的样子。 我正在使用jQuery 1.4.2。 问题是我的List在action方法中总是显示NULL。 将一个JavaScriptstring数组不正确地映射到C#中的string列表?

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后,我遇到了同样的问题。 你可以在这里find解决scheme(在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;