Mik*_*Dub 5 c# asp.net-mvc inheritance razor asp.net-mvc-4
我试图避免在我拥有/创建的每个 Razor 视图中手动指定布局路径。
因此,在剃刀视图中,您通常会指定视图/布局属性,例如:
@{
ViewBag.Title = "About Us";
Layout = "~/Views/Shared/_ContentLayout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)
我有一个基本控制器,我的所有控制器都继承了它,我希望能够在这个级别指定布局,或者在 app_start 等中指定布局。
对于任何例外,我只会在视图本身中覆盖它。
经过广泛的搜索,我还没有找到任何人能够做到这一点的证据。
我当前的下一个最佳解决方法是在 ViewBag 中指定它,以保持动态,但我仍然需要在视图中放置一个声明:
@{
Layout = ViewBag.Layout;
}
Run Code Online (Sandbox Code Playgroud)
是否可以?解决方案?
参考:http : //weblogs.asp.net/scottgu/asp-net-mvc-3-layouts
由于 MVC3 有一个约定,其中......
您可以
\Views在项目文件夹下添加一个名为 _ViewStart.cshtml(或 VB 的 _ViewStart.vbhtml)的文件:_ViewStart 文件可用于定义要在每个视图渲染开始时执行的公共视图代码。例如,我们可以在 _ViewStart.cshtml 文件中编写代码,以编程方式将每个 View 的 Layout 属性设置为
_ContentLayout.cshtml默认文件:Run Code Online (Sandbox Code Playgroud)@{Layout = "~/Views/Shared/_ContentLayout.cshtml";}因为这段代码在每个视图的开始执行,我们不再需要在任何单独的视图文件中显式设置布局(除非我们想覆盖上面的默认值)。
| 归档时间: |
|
| 查看次数: |
1632 次 |
| 最近记录: |