这是我要解决的情况:
我有一个主要的共享布局与一个部分@RenderSection(“菜单”),我想默认为我的大多数页面的标准菜单,但我想在几个子页面中替换/覆盖该部分.剃须刀在这个阶段在游戏中是否可能?
我希望我可以在_ViewStart.cshtml中定义该部分的默认实现,但它似乎不喜欢它.
菜单部分视图对于这种情况会更好吗?
编辑:
我现在使用此代码收到以下错误:以下部分已定义,但尚未呈现给布局页面“〜/ Views / Shared / _Layout.cshtml”:“菜单”.
_Layout.cshtml
- <div id="menu">
- @if (IsSectionDefined("menu"))
- {
- RenderSection("menu");
- }
- else {
- <text>
- <ul>
- <li>@Html.ActionLink("Home","Index","Home")</li>
- <li><a href="#">Lookups</a>
- <ul>
- @Html.ActionLink("Product","Product")
- </ul>
- </li>
- </ul>
- </text>
- }
- </div>
Index.cshtml
- @section menu {
- <ul>
- <li>@Html.ActionLink("Product","Product")</li>
- <li>@Html.ActionLink("Form Type","Product")</li>
- <li>@Html.ActionLink("Supplier","Product")</li>
- </ul>
- }
解决方法
啊,我搞砸了,发现我可以通过切换逻辑来做到这一点:
- @RenderSection("Header",false)
- @if (!IsSectionDefined("Header")) {
- <header>
- Default Header!
- </header>
- }
所以如果我的页面没有定义@section Header {…},它将呈现默认值.