2015-11-14 60 views
0

這可能沒有實現的答案,但是,我正在尋找一種簡單的方法在控制器基礎上呈現分區塊。顯然_ViewStart是行不通的,因爲它不會知道什麼觀點來呈現的部分,而是向你展示我的意思....ASP.NET MVC根據控制器在控制器上呈現部分基礎

/Shared/_Layout.cshtml

... 
@RenderSection("Streetcar", required: false) 
... 

/_ViewStart.cshtml

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

/Test/_ViewStart.cshtml

... 
@{ 
    // notice layout isn't being set because we still want the global _ViewStart layout 
} 

@section Streetcar { 
    Named Desire 
} 
... 

在一個完美的我可以默認爲Test文件夾中的所有單個視圖渲染一個部分,並捕獲由TestController生成的所有視圖。由於無法以這種方式完成,是否有人知道這種方法乾淨利落?

回答

0

我不知道如果我理解你被

問什麼由控制器根據一個控制器

我的回答對您,只想Nested Master Pages的假設前提渲染節。

所以你是對的,_ViewStart是一個主頁面切換,而不是佈局/主頁面本身。但是你可以嵌套母版頁:

/Shared/_Layout.cshtml

@RenderBody() 
@RenderSection("scripts", required: false) 

/_ViewStart.cshtml

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

/Views/Shared/_TestLayout.cshtml

@{ 
    // References 'global' masterpage 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

// And override it as necessary 
@section scripts { 
    <script> 
     console.log("Nested layout ran"); 
    </script> 
} 

@RenderBody() 

/Test/_ViewStart.cshtml

@{ 
    // Set test folder to use test master layout 
    Layout = "~/Views/Shared/_TestLayout.cshtml"; 
}