ViewStart和Layout - 有什么区别?

时间:2014-08-13 15:19:48

标签: c# asp.net-mvc razor asp.net-mvc-layout

我刚开始阅读ASP.NET MVC 4书并得到一个问题。在Razor部分作者说,如果我不在View.cshtml文件中设置Layout变量,它将默认搜索_ViewStart.cshtml,但在另一部分他在Views / Shared中使用_Layout.cshtml,我不明白

如果我在View.cshtml中得到这样的smth:

@{
     Layout = null;
 }

它告诉我这个View没有布局,但如果我这样做:

@{

 }

这样,View会搜索_ViewStart.cshtml文件或_Layout.cshtml吗?

2 个答案:

答案 0 :(得分:18)

基本上默认情况下,我们在视图>>中有主布局共享>> _Layout.cshtml ,这个东西在 _ViewStart.cshtml 中定义,哪一个是我们的默认主布局。

默认情况下,当我们使用主布局创建视图时,其主布局为 _Layout.cshtml ,但我们可以从 _ViewStart.cshtml

更改它

当我们写:

@{
     Layout = null;
 }

在我们的视图中我们说这个视图没有任何主布局,这在我们主要创建局部视图或没有主布局的独立视图时使用。

如果您默认打开 _ViewStart.cshtml ,则会在其中写入:

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

如果我们愿意,我们可以改变它。

您还可以通过在其上面写下主布局视图的网址来更改某些特定视图主版面:

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

答案 1 :(得分:1)

您可以将其设置为默认值(正如他在第二个示例中所做的那样)或制作您自己的“自定义”(他可能会从现在开始)。

一旦你学到了更多(创建布局表/等),作者可能会进入更多/更好的细节。