ASP.Net MVC 3 JsonValueProviderFactory проблема с методом контроллера, который принимает массив аргументов - PullRequest
1 голос
/ 17 марта 2011

Я разрешаю JsonValueProviderFactory заполнять параметры моего действия контроллера.Одним из параметров является массив Cat .Это работает, но иногда, когда существует только один Cat , он не передается в виде массива, аргумент просто Cat .Я использую ExtJs, который обрабатывает все на стороне клиента.

Есть ли способ обработать эту сторону сервера?Или мне нужно будет взломать запрос от ExtJs, чтобы заставить его всегда отправлять массив?

    [HttpPost]
    public ActionResult Edit(int id, IEnumerable<Cat> Data){...}

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Правильный JSON-запрос должен выглядеть следующим образом, если у вас есть один кот:

{ 'id': '123', 'Data': [ { 'Name': 'Felix', 'Age': 6 } ] }

и для нескольких кошек:

{ 'id': '123', 'Data': [ { 'Name': 'Felix', 'Age': 6 }, { 'Name': 'Morgan', 'Age': 2 } ] }
0 голосов
/ 17 марта 2011

MVC пытается привязать один экземпляр Cat только к этому, экземпляр Cat, а не IEnumerable. Передайте массив.

Если вы хотите обработать его на стороне сервера, вы всегда можете:

List<Cat> cats = new List<Cat>;
cats.Add(argCat);
...

Поскольку ваш аргумент контроллера IEnumerable, может показаться, что вы все равно ожидаете набор данных. Возможно, рассмотрите отдельное действие контроллера для отдельного экземпляра, если это имеет смысл для бизнеса.

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