AJAX将JavaScript字符串数组发布到JsonResult作为List <string>始终返回Null?</string>

时间:2010-03-25 13:16:47

标签: jquery asp.net-mvc ajax arrays json

我正在尝试在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" });
    }

2 个答案:

答案 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;
相关问题