在 _Layout.cshtml 中将布局设置为空

Setting Layout to null in _Layout.cshtml

为什么要在 _Layout.cshtml 中将布局 属性 设置为空?

比如像这样,在渲染body view之前?

    ...
    <section id="content">
        @{ Layout = null; }
        @RenderBody()
    </section>
    ...

这对我来说似乎很荒谬,删除行设置布局不会改变页面加载的方式。

您是否有任何原因想要在_Layout.cshtml中设置布局属性?

如果你想创建一个不从_Layout继承任何布局的局部视图,那么你将使用@{ Layout = null; } 在您的部分视图的开头。

布局页面也可以有布局。在 nested layouts 中,你故意使用 Layout 属性 来定义布局页面的超级布局。默认情况下,如果您未指定任何内容,它在您的布局页面中为 null。当您制作 @{Layout=null} 时,您明确表示这是您的最终布局,因此它不会嵌套在任何超级布局中。

我知道这是一个旧话题,但这个技巧解决了我的问题! 我喜欢在这里分享我的解决方案

  • 先把_ViewStart.cshtml改成:

    @{ if (Layout != "") { Layout = "~/Views/Shared/_Layout.cshtml"; } }

如您所见,Layout 是一个 属性,我们将检查它是否不等于 ""

  • 接下来你必须在你的视图中添加这个

    @{ Layout = ""; }

而且不用布局也能看得开心!