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>
}
@节内容外{
一些额外的内容
}
我已经弄明白了这个模式的用途:它用于有多个布局层的情况。节定义的范围是页面的直接父布局。因此,要定义将在更高级别布局中呈现的部分,必须使用此构造将其传递到层次结构