在 _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 = "";
}
而且不用布局也能看得开心!
为什么要在 _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 = ""; }
而且不用布局也能看得开心!