asp.net-mvc – 在“剃刀”视图中默认一个部分

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在“剃刀”视图中默认一个部分前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我要解决的情况:

我有一个主要的共享布局与一个部分@RenderSection(“菜单”),我想默认为我的大多数页面的标准菜单,但我想在几个子页面中替换/覆盖该部分.剃须刀在这个阶段在游戏中是否可能?

我希望我可以在_ViewStart.cshtml中定义该部分的默认实现,但它似乎不喜欢它.

菜单部分视图对于这种情况会更好吗?

编辑:

我现在使用此代码收到以下错误:以下部分已定义,但尚未呈现给布局页面“〜/ Views / Shared / _Layout.cshtml”:“菜单”.

_Layout.cshtml

  1. <div id="menu">
  2. @if (IsSectionDefined("menu"))
  3. {
  4. RenderSection("menu");
  5. }
  6. else {
  7. <text>
  8. <ul>
  9. <li>@Html.ActionLink("Home","Index","Home")</li>
  10. <li><a href="#">Lookups</a>
  11. <ul>
  12. @Html.ActionLink("Product","Product")
  13. </ul>
  14. </li>
  15. </ul>
  16. </text>
  17. }
  18. </div>

Index.cshtml

  1. @section menu {
  2. <ul>
  3. <li>@Html.ActionLink("Product","Product")</li>
  4. <li>@Html.ActionLink("Form Type","Product")</li>
  5. <li>@Html.ActionLink("Supplier","Product")</li>
  6. </ul>
  7. }

解决方法

啊,我搞砸了,发现我可以通过切换逻辑来做到这一点:
  1. @RenderSection("Header",false)
  2. @if (!IsSectionDefined("Header")) {
  3. <header>
  4. Default Header!
  5. </header>
  6. }

所以如果我的页面没有定义@section Header {…},它将呈现默认值.

猜你在找的asp.Net相关文章