RedirectToAction не передает все параметры - PullRequest
0 голосов
/ 22 апреля 2011

У меня есть эти два метода в одном контроллере, первый передает два параметра второму.

При отладке переданный список (model.RequestedProducts) является правильным (не пустым), но при втором способе правильно читается только idOR, List<OCS> RequestedProducts пусто.

    [HttpPost]
    public ActionResult Index(int idOR, ViewModel model, string add, string remove, string send)
    {
        //...
                return RedirectToAction("Done", 
                                         new { idOR = idOR, 
                                         RequestedProducts = model.RequestedProducts});       
    }

    public ActionResult Done(int IdOR, List<OCS> RequestedProducts)
    { ...

Что мне не хватает?

Может быть, есть лучший способ сделать это? (кроме перенаправления на действие)

Спасибо

1 Ответ

1 голос
/ 22 апреля 2011

Когда вы используете RedirectToAction, вы возвращаете сообщение клиенту, чтобы запросить новый URL, вероятно, что-то вроде /controller/action/id. Вы Routes определите, как формируется URL. Я предполагаю, что у вас определен маршрут по умолчанию, и в вашем случае у MVC нет возможности узнать, как десериализовать ваш тип RequestedProducts в URL, а затем связать его обратно с типом List.

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

Значение свойства TempData хранится в состоянии сеанса. Любой метод действия, вызываемый после установки значения TempDataDictionary, может получить значения из объекта, а затем обработать или отобразить их. Значение TempData сохраняется до тех пор, пока оно не будет прочитано или пока не истечет время ожидания сеанса.

В этой статье MSDN все объясняется.

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