如何定义一个部分并立即在布局页面中呈现它?
// _ Layout.cshtml
<header>
@section sb233{
<div class="somecontent">
@ViewBag.somecontent
</div>
}
@if (ViewBag.sb233) { RenderSection("sb233"); }
</header>
//Main container
<footer>@RenderSection("footer",false)</footer>
// aView.cshtml
@{
ViewBag.sb233=false;
ViewBag.somecontent="sb233";
}
//Page content
@section footer { @RenderSection("sb233");}
// anotherView.cshtml
@{ViewBag.sb233=true;}
//Page content
@section footer { Something else}
给我一个&#34;未定义的部分&#34;错误。
在布局而不是视图中定义节的原因是它是一个常见的重复节,并允许视图控制是否应该以及在何处呈现节。
答案 0 :(得分:0)
我认为你对自己来说有点太难了。 您希望基于viewbag属性显示指定的部分,您可以在没有RenderSection的情况下执行此操作。
// _ Layout.cshtml
<header>
@if (ViewBag.sb233)
{
<div class="somecontent">
@ViewBag.somecontent
</div>
}
</header>
//Main container
<footer>@RenderSection("footer",false)</footer>
// aView.cshtml
@{
ViewBag.sb233=false;
}
//Page content
@section footer { }
// anotherView.cshtml
@{
ViewBag.sb233=true;
ViewBag.somecontent="sb233";
}
//Page content
@section footer { }
只是为了您的知识,您的anotherView.cshtml页面返回错误,因为它希望您的视图定义了一个sb233部分。但你没有那个。
将_Layout.cshtml行更改为:
@if (ViewBag.sb233) { RenderSection("sb233", false); }