2010-05-21 40 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

相關問題