Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在Asp.NETMVC的主视图中访问当前IPrinciple_Asp.net Mvc_Master Pages - Fatal编程技术网

Asp.net mvc 在Asp.NETMVC的主视图中访问当前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。 有人知道另一种方法

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

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