ViewData[«ключ»] недоступен при использовании RedirectToRoute («Маршрут») в контроллере

#asp.net-mvc #view #viewdata

#asp.net-mvc #Вид #viewdata

Вопрос:

Я работаю над своим первым приложением поверх MVC3 и все еще новичок в нем.
Проблема в том, что я помещаю какое-то сообщение в свой контроллер в словаре ViewData для отображения на странице просмотра, но, насколько я использую return View («Индекс»); сообщение получено в представлении правильно, но когда я меняю контроллер на возврат через RedirectToRoute («По умолчанию»).).. словарь ViewData[] отображает нулевое значение.

Я хочу использовать RedirectToRoute(«По умолчанию») для изменения URL-адреса .. Могу ли я каким-либо образом использовать ViewData[] с RedirectToRoute («По умолчанию»)?

 public ActionResult Logout()
    {
        Session.Contents.Remove("usrnme");
        Session.Contents.Remove("usrId");
        ViewData["mainMessage"] = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
        //return View("Index");
        return RedirectToRoute("Default");
    }
  

Ответ №1:

Попробуйте

 TempData["mainMessage"] = ....
  

и по умолчанию

 if (TempData["mainMessage"] != null) 
{    
    ViewData["mainMessage"] = TempData["mainMessage"];
}
  

Ответ №2:

Поскольку при этом действии не возвращается «view» (похоже, что ваш метод выхода из системы не работает на том контроллере, который обрабатывает маршрут «По умолчанию»), вы не можете назначить ему ViewData . Вместо этого установите ViewData в действие контроллера, который сопоставлен с маршрутом «По умолчанию».