Проблемы при публикации массива объектов JSON в Asp.Net MVC 2 - PullRequest
1 голос
/ 28 января 2011

У меня проблемы с отправкой массива объектов JSON в ActionResult в Asp.Net MVC, где список полученных объектов всегда равен нулю.

Вот код нарушения:

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 Ответ

2 голосов
/ 28 января 2011

Я не верю, что MVC 2 имеет поддержку автоматической привязки для JSON, которая объяснит вашу проблему.

Фил Хаак обсуждает решение по следующей ссылке, которая проведет вас через создание JsonValueProvider для решения этой конкретной проблемы.

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

Редактировать: извините, он не проводит вас через фактическую реализацию, но говорит об этом и предоставляет ссылку на образец, содержащий провайдера, в конце. В MVC 3 встроена эта поддержка, поэтому, если вы сможете обновить ее, вы сразу же решите эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...