是否有可能使剃刀部分可选
本文关键字:剃刀部 有可能 是否 | 更新日期: 2023-09-27 18:14:01
如果我有一个页面:
<body>
@section SomeStuff {
<span>This is a section I just addered</span>
}
</body>
是否有可能布局不呈现此部分,或者这与概念上应该如何工作相反?似乎这将是有用的,能够不渲染页面上的某些部分(除非我认为这是错误的)。
编辑:包括错误信息可能是有帮助的,当我把一个部分进入主页面,布局页面失败:The following sections have been defined but have not been rendered for the layout page "/Views/Layouts/_Layout1.cshtml": "SomeStuff".
好像它迫使我渲染页面上的每个部分或其他东西。
也就是说,在布局中。cshtml,我不调用@RenderSection,但在Index.html我有一个节称为SomeStuff
定义。这合法吗?似乎它迫使我渲染页面中的所有部分,但似乎部分应该是可选的,不是吗?
您可以指定是否需要一个节。
@RenderSection("SomeStuff", required: false)
如果你不在视图中渲染它,它就不会出现错误,这里有注释
http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx通过将所需参数设置为false,可以将某个节设置为可选的。如果你想在你的section中包含一些可选的包装HTML,那么你也可以使用IsSectionDefined方法。
@if(IsSectionDefined("SideBar"))
{
<div class="sidebar">
@RenderSection("SideBar", required: false)
</div>
}
对于一个特定的布局,不呈现特定的部分你需要有这样的东西这是你的layout.cshtml
@RenderSection("Somestuff", required:false)
你可以这样做:
@if (condition) {
@RenderSection("SomeStuff")
}
或者直接使用conditional statement
而不是@RenderSection
:
@if (yourCondition) {
<span>This is a section I just addered</span>
}
我遇到了一个类似的问题,当我试图动态注入代码到一个内联脚本,我解决它通过:
@if (someCondition)
{
@Html.Raw(@"
Your stuff here
");
}