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;