2015-12-02 106 views
0

在MVC 5.1 Web應用程序項目中,我有一個專用於該項目的Facebook畫布應用程序的控制器。我需要控制器返回的所有視圖都具有特定的佈局。 (通常,我不會在控制器中定義佈局屬性,因爲它在View上有太多的說法,但在這種情況下,我願意讓控制器指定它,因爲它全部關於facebook畫布)。在OnActionExecuted中爲視圖定義佈局

我可以通過返回

return View("View", "~/Views/Shared/_FacbookCanvasLayout.cshtml"); 

實現這一點,但在這種情況下,我不得不用這個每一個視圖。我想要的是改寫基本控制器類中的OnActionExecuted方法並在其中定義佈局。

所以我的問題是,我怎樣才能在OnActionExecuted類中定義視圖的佈局 - 或者如果有更好的解決方案,我該怎麼做?

+0

爲什麼不創建該控制器特定的佈局視圖,然後爲每個在方法的觀點使用@ { 佈局=「〜/查看/共享/ _FacbookCanvasLayout.cshtml」} –

+0

@ŁukaszTrzewik:相同原因,我不想多次從控制器返回,我想消除冗餘。 –

回答

1

那麼這樣做呢?

protected override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     base.OnActionExecuted(filterContext); 
     var res = filterContext.Result as ViewResult; 
     if (res != null) 
      res.MasterName = "~/Views/Shared/_FacbookCanvasLayout.cshtml"; 
    } 
+1

正是我在找的,謝謝。 –