2010-05-21 44 views
0

我目前有一个抽象控制器类,我所有的控制器继承自。 我希望能够在我的母版页中使用当前用户(IPrinciple)对象。 我读,我可以用我的抽象基控制器类的构造器,这是我能做到像访问Asp.Net中的主视图中的当前原子MVC

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

的东西,然后我可以从我的主页访问计算机[“用户名”]等。 我的问题是this.User此时为空。 有人知道一种不同的方法吗?

在此先感谢。

回答

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

一个可行的治疗!非常感谢您的帮助! – bplus 2010-05-21 12:51:51

相关问题