4

本文所述,我创建了一个抽象的基本控制器类,以便能够将数据从控制器传递到 master.page。在这种情况下,我想在我的数据库中查找用户,查询 User.Identity.Name(仅当他登录时)。

但是,我注意到在这个抽象基类中,User属性总是null. 我该怎么做才能让它工作?

非常感谢

4

5 回答 5

7

正如 Paco 所建议的,在您尝试使用它之前,视图数据不会被初始化。

尝试覆盖 Controller.Initialize() 代替:

public abstract class ApplicationController : Controller
{
    private IUserRepository _repUser;

    public ApplicationController()
    {
    }

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);

        _repUser = RepositoryFactory.getUserRepository();
        var loggedInUser = _repUser.FindById(User.Identity.Name);
        ViewData["LoggedInUser"] = loggedInUser;
    }
}
于 2009-10-30T15:55:53.300 回答
3

要使用用户,您应该从

HttpContext.Current.User.Identity.Name
于 2009-01-08T22:31:08.590 回答
1

通过在 web.config 中将身份验证设置为 Windows,可以通过 User.Identity.Name 获取用户

于 2009-04-30T16:55:01.273 回答
0

您是否尝试过:ControllerContext.HttpContext.Current.User.Identity.Name?

于 2009-01-12T20:16:07.387 回答
0

我在静态 Utlilites 类上使用 Page 类。像那样;

Page P = (Page)HttpContext.Current.Handler;

我可以通过当前请求页面的 P 对象获取所有属性..

于 2009-01-12T15:42:45.393 回答