在控制器中使用RedirectToRoute(“Route”)时,ViewData [“key”]不可用

时间:2011-10-12 20:11:15

标签: asp.net-mvc view viewdata

我正在研究我对MVC3的第一个应用程序,并且仍然是一个新手 问题是我在ViewData字典中的控制器中放置了一些消息,以便在视图页面上显示,但就我使用的是返回视图(“索引”);在正确的视图中收到meesage,但当我更改控制器以通过RedirectToRoute(“Default”)返回时... ViewData []字典显示空值。

我想使用RedirectToRoute(“Default”)更改url地址..有什么方法我可以使用ViewData []和RedirectToRoute(“Default”)?

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");
    }

2 个答案:

答案 0 :(得分:2)

尝试

TempData["mainMessage"] = ....

并在默认

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

答案 1 :(得分:0)

因为此操作没有返回“视图”(看起来您的注销方法不在任何控制器处理“默认”路由的情况下),您无法将ViewData分配给它。而是将ViewData设置为映射到“默认”路由的Controller的Action。