2012-02-16 74 views
6

我有一個_ViewStart定義了我的項目(頁眉,頁腳)的主佈局。在嵌套內容的區域上使用_ViewStart

在這個項目中,我有幾個區域。每個區域都有相同的頁眉和頁腳,以及其自己的側面菜單。爲此,我在該區域的根目錄上創建了一個_ViewStart。下面是(簡化的)代碼:

/Views/_ViewStart.cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

/Views/Shared/_Layout.cshtml

<html> 
     <div> 
      //header 
     </div> 
     <div> 
      @RenderBody 
     </div> 
    </html> 

區富 - > /地區/富/瀏覽次數/_ViewStart.cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<div class="row"> 
<div class="sidemenu"> 
    //default sidemenu for this area 
</div> 
<div> 
     @RenderBody() 
</div> 
</div> 

頁/Areas/Foo/Views/Bar/Index.cshtml不會渲染和我得到這個錯誤:

CS0103:「RenderBody」這個名字不會在目前情況下

如何實現這種母版頁嵌套的存在嗎?

回答

9

我不想回答我的問題,但這裏有雲:

你不能直接引用該網站的根_ViewStart您地區的_ViewStart如果你想要一個RenderBody那裏。

因此,解決辦法是:

/Views/_ViewStart.cshtml引用/Views/Shared/_MainLayout.cshtml

/Areas/Foo/Views/_ViewStart.cshtml引用/Areas/Foo/Views/Shared/_AreaLayout.cshtml

/Areas/Foo/Views/Shared/_AreaLayout.cshtml參考文獻/觀看/分享/ _MainLayout.cshtml

就是這樣。您必須使用「共享」文件夾才能使用「RenderBody()」方法。