在Asp.Net MVC中访问主视图中的当前IPrinciple

时间:2010-05-21 08:27:18

标签: asp.net-mvc master-pages

我目前有一个抽象的控制器类,我所有的控制器都是从它继承的。 我希望能够在我的母版页中使用当前用户(IPrinciple)对象。 我读到我可以使用我的抽象基本控制器类的构造函数,即我可以做类似

的操作
public BaseController()
    {
        ViewData["UserName"] = this.User.Identity.Name;
    }

然后我可以从我的母版页访问ViewData [“UserName”]等。 我的问题是this.User此时为空。 有人知道不同的方法吗?

提前致谢。

1 个答案:

答案 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
{ }