MVC RedirectToAction () любой способ передать объект к целевому действию? - PullRequest
2 голосов
/ 29 сентября 2011

Заполненный список catList всегда равен Count = 0, когда код переходит к CreateProduct (), поэтому, как я понимаю, он не доставляется. Учитывая, что RouteValueDictionary не делает этого? Любой другой путь?

       public ActionResult GetCats(int CatID)
    {

        List<Category> catList = new List<Category>();

        if (CatID >= 0 )
        {

            catList = context.Categories.Where(x => x.PCATID == CatID).ToList();
        }


        return RedirectToAction("CreateProduct", "Admin", new { catList });
    }





public ActionResult CreateProduct(List<Category> catList) {      }

Ответы [ 4 ]

4 голосов
/ 29 сентября 2011

Вы на самом деле пытаетесь использовать контроллеры для доступа к данным.

Переместите поиск данных "GetCats" в свой бизнес-уровень (объект службы, репозиторий, что вам подходит).

Тогда CreateProduct должен быть там дважды (2 подписи). Один без параметров, в котором вы собираетесь вызывать «GetCats» из вашего бизнес-уровня и отправлять его в представление.

Другая реализация будет помечена атрибутом HttpPostAttribute и будет содержать в параметрах всю необходимую информацию для создания кота.

Вот и все. Просто и легко.

2 голосов
/ 29 сентября 2011

Вы можете поместить любые нужные вам вещи в TempData, затем позвонить RedirectToAction.

1 голос
/ 29 сентября 2011

, если вас не волнует изменение URL браузера, вы можете просто

return CreateProduct(catList)

1 голос
/ 29 сентября 2011

RedirectToAction просто возвращает в браузер код "302" с URL-адресом для перенаправления. Когда это происходит, ваш браузер выполняет GET с этим URL.

Ваши значения RouteValues ​​должны быть простыми. Вы не можете передать сложный объект или коллекции, используя значение маршрута.

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