2014-03-06 109 views
0

我正在構建一個BaseController,我想要一個函數熄滅並檢查用戶是否已通過身份驗證並使用用戶名或「Guest」填充變量。然後我需要從我的佈局視圖中訪問該變量(以打印諸如「hello,USER」之類的東西)。我已經成功構建了該方法,但是我無法弄清楚的是如何將結果分配給佈局視圖(或綁定到從BaseController繼承的控制器的任何其他視圖)可以訪問的變量。將數據從BaseController傳遞到視圖

回答

3

您可以在ViewBag其存儲在一個基本的控制器:

public class BaseController : Controller { 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) { 
     ViewBag.UserName = 
      filterContext.HttpContext.User.Identity.IsAuthenticated 
       ? filterContext.HttpContext.User.Identity.Name 
       : "GUEST"; 

     base.OnActionExecuting(filterContext); 
    } 
} 

有你的控制器從基本控制器繼承..然後你的意見可以成爲:

<p>Hello @ViewBag.UserName</p> 
+0

謝謝,我錯過了將它放在'OnActionExecuting'方法中。 – Matthew