将数组从jQuery传递到MVC.NET控制器,在控制器上给出null结果,但jQuery函数上存在值

Mar*_* OB 7 ajax asp.net-mvc jquery post json

我正在尝试将数组从jQuery函数传递给我的控制器.该数组包含内容和持有该内容的div的id.

当我检查通过Firebug中的AJAX帖子发送的对象时,正确的值存在但是在我的控制器上放置一个断点后,接收的值是一个空的List或Array或我尝试将其设置为的任何类型.我很擅长使用JSON将数据传递给我的控制器,所以在我出错的地方会有所帮助.

jQuery函数调用"提交"单击.该数组在我的脚本中全局声明,并在每次用新内容填充新区域时添加.

function postContent() {
        $.ajax({
            type: "POST",
            datatype: 'json',
            url: "/Admin/getContentArray",
            data: JSON.stringify(contentArray),
            contentType: 'application/json; charset=utf-8',
            success: function (result) {
                alert(result.Result);
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

测试接收控制器

[HttpPost]
    public JsonResult getContentArray(List<Content> myPassedArray)
    {
        var data = myPassedArray;
        return this.Json(null);
    }
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 5

我通过在进行调用之前将传统属性设置为true来实现此功能.即:

jQuery.ajaxSettings.traditional = true

$.get('/controller/MyAction', { vals: arrayOfValues }, function (data) {... 
Run Code Online (Sandbox Code Playgroud)

我在这里找到了解决方案:通过AJAX将数组传递给mvc Action


Dar*_*rov 1

您可以看看下面的博文。希望它能澄清事情。基本上有两种情况:在 ASP.NET MVC 3 中,您可以将 JSON 请求发送到开箱即用的控制器操作;在以前的 ASP.NET MVC 版本中,您需要使用自定义JsonValueProviderFactory.