将JSON对象数组发布到Asp.Net MVC 2的问题

时间:2011-01-28 09:59:08

标签: json asp.net-mvc-2

我在向Asp.Net MVC中的ActionResult发布JSON对象数组时遇到问题,其中收到的对象列表始终为空。

以下是有问题的代码:

使用Javascript:

        var lineItems = new Object();
        lineItems.Entrys = new Array()
        var i = 0;
        var currentId = 0;

        $('#pages-table td.PageId').each(function () {
            currentId = $(this).html().toString().trim();
            lineItems.Entrys[i] = new Object({ ID: currentId, POS: i });
            i++;
        });

        $.ajax({
            url: 'UpdatePageOrder',
            data: JSON.stringify(lineItems),
            contentType: 'application/json',
            dataType: 'json',
            traditional: true,
            type: 'POST',
            success: function (result) {
            }
        });

Asp.Net MVC

    public class PageOrder
    {
        public string ID { get; set; }
        public string POS { get; set; }
    }


    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult UpdatePageOrder(List<PageOrder> list)
    {
    var newPageOrderList = list;
    ... list is always null

}

Fiddler TextView:

 {"Entrys":[{"ID":"0","POS":"7"},{"ID":"1","POS":"3"}]}

编辑 *

Downloaded MVC2 Futures and added to OnApplicationStarted (I'm using ninject)

ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());

1 个答案:

答案 0 :(得分:2)

我不相信MVC 2对JSON有自动绑定支持,可以解释你的问题。

Phil Haack在以下链接中讨论了一个解决方案,它将引导您构建一个JsonValueProvider来解决这个特定问题。

http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx

编辑:抱歉,他没有带您完成实际的实施,而是讨论它并提供指向包含提供商的示例的链接。 MVC 3内置了这种支持,所以如果你可以升级,你会马上解决这个问题。