这是我要解决的情况:
我有一个主要的共享布局,其中只有一个部分@RenderSection(“Menu”),我想将其默认设置为大多数页面的标准菜单,但是我想在几个子页面中替换/覆盖该部分。在游戏的现阶段,使用Razor可以做到这一点吗?
我希望可以在_ViewStart.cshtml中定义该部分的默认实现,但似乎并不喜欢它。
在这种情况下,“菜单部分 View ”会更好吗?
编辑:
我现在用此代码遇到以下错误:已经定义了以下部分,但尚未为布局页面“〜/ 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","Index","Product")
</ul>
</li>
</ul>
</text>
}
</div>
Index.cshtml
@section menu {
<ul>
<li>@Html.ActionLink("Product", "Index", "Product")</li>
<li>@Html.ActionLink("Form Type", "Index", "Product")</li>
<li>@Html.ActionLink("Supplier", "Index", "Product")</li>
</ul>
}
最佳答案
啊...我搞砸了,发现只要改变逻辑就可以做到:
@RenderSection("Header", false)
@if (!IsSectionDefined("Header")) {
<header>
Default Header!
</header>
}
因此,如果我的页面未定义
@section Header { ... }
,它将呈现默认值。
关于asp.net-mvc - 在 Razor View 中默认区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4201186/