是否有可能使剃刀部分可选

本文关键字:剃刀部 有可能 是否 | 更新日期: 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
        ");
    }