这可能没有实现的答案,但是,我正在寻找一种基于控制器渲染节块的简单方法。显然_ViewStart
不会起作用,因为它不知道要呈现该部分的视图,而是告诉你我的意思....
/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 :(得分: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";
}