将数组从jQuery传递到MVC.NET控制器,在控制器上得到空结果,但在jQuery函数中有值

7
我正在尝试将一个包含内容和持有该内容的div的id的数组从jQuery函数传递给我的控制器。当我在Firebug中检查通过AJAX post发送的对象时,正确的值已经存在,但是在我的控制器上设置断点后,接收到的值为空List或Array或我尝试设置的任何其他类型。我对使用JSON将数据传递给我的控制器还比较新手,因此希望得到一些帮助,了解我出了什么问题。"submit"点击时调用的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);
            }
        });
    }

测试接收控制器

[HttpPost]
    public JsonResult getContentArray(List<Content> myPassedArray)
    {
        var data = myPassedArray;
        return this.Json(null);
    }
2个回答

5

在发起get请求之前,将traditional属性设置为true以使其正常工作。例如:

jQuery.ajaxSettings.traditional = true

$.get('/controller/MyAction', { vals: arrayOfValues }, function (data) {... 

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


1

您可以查看以下博客文章。希望它能澄清事情。基本上有两种情况:ASP.NET MVC 3,您可以直接向控制器操作发送JSON请求,并且之前的ASP.NET MVC版本需要使用自定义JsonValueProviderFactory


这很奇怪,因为我正在使用MVC 3,我应该设置什么数据类型来接收我的控制器上的这些数据?如上所述,将其设置为“Content”类型的列表会返回一个具有正确条目数量但没有数据的列表。 - Mark OB
你把我指向了正确的方向。我将我的内容模型设置为与JSON对象中发送的键完全相同,然后就有结果了!谢谢Darin。 - Mark OB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接