我正在看一些剃刀布局代码。我找到了以下代码段:
@section Foo
{
@if (@IsSectionDefined("Foo"))
{
@RenderSection("Foo", required: false)
}
}
不会@section Foo
定义Foo
,这意味着if(@IsSectionDefined("Foo")
)条件总是如此?此外,如果该部分是在另一个视图页面中定义的,那么这不会导致重新定义吗?
基本上,我不明白为什么这个条件包含在@section
条款中。
答案 0 :(得分:2)
我已经弄清楚这个模式的用途:这用于有多层布局的情况。节定义的范围限定为页面的直接父布局。因此,要定义将在更高级别布局中呈现的节,必须使用此构造将其传递给层次结构。
答案 1 :(得分:0)
使用RenderSection("Foo");
答案 2 :(得分:0)
所以这就是我想到的:
代码的剪切本身并没有伤害任何东西。
它说的是:
如果要定义@section Foo
,则必须在具有当前布局页面的其他一些页面中定义它。如果您定义它,则必须通过在布局页面中添加@RenderSection("ExtraContent")
来呈现它。
在布局页面中
@section ExtraContent{
@if (@IsSectionDefined("ExtraContent")){
@RenderSection("ExtraContent", required: false)
}
}
@RenderSection("ExtraContent")
在关于页面:
@section ExtraContent{
<p>Some extra content</p>
}