0

背景:

MVC3 Intranet 应用程序使用 windows 身份验证。windows 身份验证完成后,HttpModule 从 HR 数据库中查找用户的网络 ID,并返回用户的员工信息并将其设置为HttpContext.Items. 我有一个基本控制器,它查找此信息并通过覆盖 OnActionExecuting 设置 ViewBag 属性。

我的问题是,HttpContext.Items["UserInfo"]尽管 HomeController 继承了 BaseController,但这些信息似乎仅在 Home/Index 上可用,而当我单击 Home/About 或 Home/Help 时不可用。任何人都可以阐明为什么会这样吗?

protected override void OnActionExecuting(ActionExecutingContext ctx)
        {          
            if (this.HttpContext.Items["UserInfo"] != null)
            {
                UserInfo User = (UserInfo)this.HttpContext.Items["UserInfo"];
                ViewBag.CurrentUser = User;
            }            

            base.OnActionExecuting(ctx);
        }
4

1 回答 1

1

HttpContext.Items仅根据请求;当您重定向到另一个视图甚至在当前视图中回发时,它不会保留。所以你需要使用Session或其他东西来持久化它。

于 2012-05-18T14:45:01.197 回答