2012-05-01 62 views
1

如果我有一個基礎控制器,例如StaffBaseController可以讓任何ViewResult結果返回到默認佈局頁面嗎?例如StaffLayout.cshtml。我知道我可以在文件夾結構中使用_viewstart文件來設置默認佈局。只是想知道我是否可以將其設置在我的基礎控制器類上。我可以在MVC3基礎控制器上爲ViewResults設置默認佈局嗎?

如果是的話我該怎麼做?在某些情況下是否可以重寫默認值?

感謝

格雷姆

回答

2

Greame,

,你可以嘗試這樣的事情在你的基地控制器(這是從一個aspx項目中獲得,但應該是tweakable的剃刀):

protected override ViewResult View(string viewName, string masterName, 
    object model) 
{ 

    // we share some views that aren't partialviews 
    // therefore, we have to ensure that the Shareholder view 
    // is ALWAYS attached to the logged in user if they aren't an admin user 
    bool userIsAdmin = IsAuthorised(new[] { "Admin" }); 

    if (!userIsAdmin && !string.IsNullOrEmpty(
     ControllerContext.HttpContext.User.Identity.Name)) 
    { 
     masterName = "Shareholder"; 
    } 

    return base.View(viewName, masterName, model); 
} 

所以在這個例子中,如果用戶不是廣告,那麼最初定義的主模板名稱(Site.Master)值將被更改爲「股東」(Shareholder.Master)最小用戶。

+0

完成和工作:)謝謝 – GraemeMiller

+0

格雷姆 - 很高興它是這樣一個簡單的修復。問題'響鈴'和快速搜索我的TFS發現了上述! :) –

+0

是的,我有一種感覺是這樣的,但我們真的被推上了一個項目,所以認爲別人會知道更快,比我可以寫它:) – GraemeMiller

相關問題