如何在ASP.NET MVC 3预览1中指定Razor中的默认LayoutPage?

Dar*_*mak 25 razor asp.net-mvc-3

我想在Razor中指定(在一个地方)默认布局页面,以便我可以删除它:

@{ LayoutPage = "~/Views/Shared/_Layout.cshtml"; }
Run Code Online (Sandbox Code Playgroud)

从我的每个.cshtml文件.但我不知道怎么......有什么想法吗?我正在使用ASP.NET MVC 3 Preview 1中的Razor引擎.

mig*_*elv 68

创建一个"〜/ Views/_ViewStart.cshtml"页面,内容如下:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

请注意,您可以在此处编写代码,因此可以根据目标设备的类型等更改布局.

现在默认情况下在空MVC3项目中创建.

资源


mar*_*ind 0

在 MVC 3 Preview 1 中没有简单的方法可以做到这一点。这是预览位的限制,将在即将发布的版本中解决。遗憾的是,_init.cshtml文件在 MVC3 预览版中不起作用,因此您无法遵循网页模式。

我可以想到两种方法来使其发挥作用(尽管都不是最佳方法)

  1. 编写您自己的页面基类,该基类派生自 WebViewPage 并在构造函数中设置正确的布局...但在这种情况下,您必须@inherits在每个视图中指定一个指令。
  2. 在操作方法中设置布局覆盖(使用View(string viewName, string masterName)覆盖)。您可以编写一个中间控制器基类,它有一个辅助方法,可以省去到处重复布局的麻烦。

  • 为了社区其他人的利益:请注意,第二个答案被广泛认为更好。 (3认同)