【问题标题】:ViewStart and Layout - what's the difference?ViewStart 和 Layout - 有什么区别?
【发布时间】:2014-08-13 15:19:48
【问题描述】:

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

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

@{
     Layout = null;
 }

它告诉这个视图没有布局,但如果我让它像:

@{

 }

所以这会让 View 搜索 _ViewStart.cshtml 文件或 _Layout.cshtml?

【问题讨论】:

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


    【解决方案1】:

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

    当我们创建一个默认主布局的视图时,它的主布局是_Layout.cshtml,但是我们可以从_ViewStart.cshtml改变它

    我们写的时候:

    @{
         Layout = null;
     }
    

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

    如果你默认打开 _ViewStart.cshtml 里面写着这个:

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

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

    您还可以通过在其顶部写入主布局视图的 url 来更改某些特定视图主布局:

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

    【讨论】:

    • 哦天哪,nvm 我注意到他开始使用 Layout 并且就像“WTF 他说空布局将搜索 ViewStart”,我刚刚注意到之前还有一个 ViewStart 文件夹.. . :D 谢谢!:)
    【解决方案2】:

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

    一旦您了解更多(创建布局表/等),作者可能会介绍更多/更好的细节。

    【讨论】:

    • 我的问题是,如果我离开 View 而没有像第二个 sn-p 那样设置 Layout,那么它将搜索 _ViewStart.cshtml 或 _Layout.cshtml? ;d
    • _Layout.cshtml。默认情况下,ViewStart 只会在第一页上使用。否则布局。(据我回忆)。
    • Nono 就像 Ehsan 说的,每个没有设置 Layout 变量的 View 都在寻找一个 _ViewStart.cshtml
    • 对不起! Tbh 我并没有真正弄乱布局部分,因为有不同的引导“主题”对于改变您的网站外观非常有用。但那是另一天!
    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    相关资源
    最近更新 更多