如本文所述,我创建了一个抽象的基本控制器类,以便能够将数据从控制器传递到 master.page。在这种情况下,我想在我的数据库中查找用户,查询 User.Identity.Name(仅当他登录时)。
但是,我注意到在这个抽象基类中,User
属性总是null
. 我该怎么做才能让它工作?
非常感谢
如本文所述,我创建了一个抽象的基本控制器类,以便能够将数据从控制器传递到 master.page。在这种情况下,我想在我的数据库中查找用户,查询 User.Identity.Name(仅当他登录时)。
但是,我注意到在这个抽象基类中,User
属性总是null
. 我该怎么做才能让它工作?
非常感谢
正如 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;
}
}
要使用用户,您应该从
HttpContext.Current.User.Identity.Name
通过在 web.config 中将身份验证设置为 Windows,可以通过 User.Identity.Name 获取用户
您是否尝试过:ControllerContext.HttpContext.Current.User.Identity.Name?
我在静态 Utlilites 类上使用 Page 类。像那样;
Page P = (Page)HttpContext.Current.Handler;
我可以通过当前请求页面的 P 对象获取所有属性..