Asp.net mvc 在Asp.NETMVC的主视图中访问当前IPrinciple
我目前有一个抽象控制器类,我的所有控制器都从该类继承。 我希望能够在母版页中使用当前用户(IPrinciple)对象。 我读到,我可以使用抽象基控制器类的构造函数,也就是说,我可以做如下事情Asp.net mvc 在Asp.NETMVC的主视图中访问当前IPrinciple,asp.net-mvc,master-pages,Asp.net Mvc,Master Pages,我目前有一个抽象控制器类,我的所有控制器都从该类继承。 我希望能够在母版页中使用当前用户(IPrinciple)对象。 我读到,我可以使用抽象基控制器类的构造函数,也就是说,我可以做如下事情 public BaseController() { ViewData["UserName"] = this.User.Identity.Name; } 然后,我可以从母版页访问ViewData[“用户名”]等。 我的问题是,这个.User此时为null。 有人知道另一种方法
public BaseController()
{
ViewData["UserName"] = this.User.Identity.Name;
}
然后,我可以从母版页访问ViewData[“用户名”]等。
我的问题是,这个.User此时为null。
有人知道另一种方法吗
提前感谢。您可以编写一个,并在OnActionExecuted
事件中将用户放入ViewData
:
public class UserActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
filterContext.Controller.ViewData["UserName"] = filterContext.HttpContext.User.Identity.Name;
}
}
然后使用此属性装饰基本控制器:
[UserActionFilter]
public abstract class BaseController: Controller
{ }