控制器基础上的控制器上的ASP.NET MVC渲染部分

时间:2015-11-14 01:14:29

标签: c# asp.net-mvc asp.net-mvc-4

这可能没有实现的答案,但是,我正在寻找一种基于控制器渲染节块的简单方法。显然_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生成的所有视图,因为它不能以这种方式完成,有没有人知道干净利落的方式?

1 个答案:

答案 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";
}
相关问题