我目前有一个抽象的控制器类,我所有的控制器都是从它继承的。 我希望能够在我的母版页中使用当前用户(IPrinciple)对象。 我读到我可以使用我的抽象基本控制器类的构造函数,即我可以做类似
的操作public BaseController()
{
ViewData["UserName"] = this.User.Identity.Name;
}
然后我可以从我的母版页访问ViewData [“UserName”]等。 我的问题是this.User此时为空。 有人知道不同的方法吗?
提前致谢。
答案 0 :(得分:2)
您可以撰写ActionFilter并在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
{ }