C# 重新加载页面时数据丢失

C# 重新加载页面时数据丢失,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我使用TempData存储登录用户角色,但在用户登录并按F5重新加载页面后,我遇到一个错误,指出对象引用未设置为对象的实例 我使用TempData是因为我的页面需要重定向。 用户在提交前填写登录表单,我不知道如何检索发布的数据,因为如果他的角色是管理员,我需要将用户重定向到管理页面;如果他的角色是普通用户,则只需将其重定向到标准页面 private bool IsAdmin(string username) { return (Roles.GetRolesForU

我使用TempData存储登录用户角色,但在用户登录并按F5重新加载页面后,我遇到一个错误,指出
对象引用未设置为对象的实例

我使用TempData是因为我的页面需要重定向。 用户在提交前填写登录表单,我不知道如何检索发布的数据,因为如果他的角色是
管理员
,我需要将用户重定向到管理页面;如果他的角色是
普通用户
,则只需将其重定向到
标准
页面

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

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

谢谢,但是为什么重新加载会删除对象数据?我想在登录后,我已经通过身份验证并使用TempDate生活,但重新加载会杀死TempData,而我的登录状态仍然是TempData,它是一个支持会话的临时存储字典,可用于单个请求。