Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 剃刀截面定义_C#_Razor - Fatal编程技术网

C# 剃刀截面定义

C# 剃刀截面定义,c#,razor,C#,Razor,我正在看一些剃须刀布局代码。我发现了以下片段: @section Foo { @if (@IsSectionDefined("Foo")) { @RenderSection("Foo", required: false) } } 难道@section Foo不定义Foo,这意味着if(@IsSectionDefined(“Foo”))条件始终为真吗?另外,如果该部分在另一个视图页面中定义,这不会导致重新定义吗 基本上,我不明白为什么这个条件被包装在一个@

我正在看一些剃须刀布局代码。我发现了以下片段:

@section Foo
{
    @if (@IsSectionDefined("Foo"))
    {
        @RenderSection("Foo", required: false)
    }
}
难道
@section Foo
不定义
Foo
,这意味着if(
@IsSectionDefined(“Foo”)
)条件始终为真吗?另外,如果该部分在另一个视图页面中定义,这不会导致重新定义吗


基本上,我不明白为什么这个条件被包装在一个
@section
子句中。

您使用
RenderSection(“Foo”)在布局文件中定义了这些节

因此我得出以下结论:

代码的剪断本身不会伤害任何东西

它说的是:

如果要定义
@section Foo
,必须在具有当前布局页面的其他一些页面中定义它。如果您定义了它,您必须通过在布局页面中添加
@RenderSection(“ExtraContent”)
来呈现它

在布局页面中:

@section ExtraContent{
    @if (@IsSectionDefined("ExtraContent")){
        @RenderSection("ExtraContent", required: false)
    }
  }
@RenderSection("ExtraContent")
@section ExtraContent{
   <p>Some extra content</p>
}
在关于页面中:

@section ExtraContent{
    @if (@IsSectionDefined("ExtraContent")){
        @RenderSection("ExtraContent", required: false)
    }
  }
@RenderSection("ExtraContent")
@section ExtraContent{
   <p>Some extra content</p>
}
@节内容外{
一些额外的内容

}
我已经弄明白了这个模式的用途:它用于有多个布局层的情况。节定义的范围是页面的直接父布局。因此,要定义将在更高级别布局中呈现的部分,必须使用此构造将其传递到层次结构