2013-02-16 31 views
0

我在使用TempData的存储登录用户的角色,但之后在用户登录并按下F5刷新页面,我碰到一个错误,指出Object reference not set to an instance of an objectTempData的失去了页面重载

我用TempData的,因为我的页面需要重定向。 用户填写登录表单之前提交它,我不知道如何检索发布的数据,因为我需要重定向用户到管理页面,如果他的角色是administrator或只是standard页面,如果他是normal user

private bool IsAdmin(string username) 
    { 
     return (Roles.GetRolesForUser(username).ToList().Contains("administrator")); 
    } 

    public ActionResult AdminLayout() 
    {    
     if(IsAdmin(TempData["LoginUsername"].ToString())) //Error TempDate on Reload 
     { 
      return View(); 
     } 
     else 
     { 
      return Index(); 
     } 
    } 

回答

2

为什么不将它存储在会话变量中?顾名思义,TempData只是临时的,会话变量会保存更长的数据。

+0

谢谢,但为什么重新加载删除对象数据?我认为在登录后我已经过身份验证并与TempDate一起生活,但在我的登录状态仍然存在时重新加载TempData – 2013-02-16 22:47:18

+1

TempData是会话支持的临时存储字典,可用于一个请求。 http://flux88.com/2008/01/testing-tempdata-in-asp-net-mvc/ – DarK 2013-02-16 22:53:45