【问题标题】:Create a dynamic menu in Umbraco 7在 Umbraco 7 中创建动态菜单
【发布时间】:2017-07-10 21:28:30
【问题描述】:

我正在开发 Umbraco 并努力在 Umbraco 中创建动态菜单。

应使用 menuTitle 调用菜单 li。

我目前拥有的代码是部分视图。

<nav>
  <ul>
    <li>
      <a href="#">Home</a>
    <li>

    @foreach (var m in Model.Menu)
    {
      <li>
        <a href="@m.Url">@m.menuTitle</a>
      </li>
    }
  </ul>
</nav>
<div class="clear"></div>

【问题讨论】:

    标签: asp.net-mvc menu umbraco


    【解决方案1】:

    如果 Menu 是一个节点列表(如 MultiNodeTreePicker 数据类型),您可以使用如下内容:

    var nodecommalist = CurrentPage.Menu.ToString().Split(',');
    @foreach (var m in nodecommalist)
    {
    var mitem = Umbraco.Content(m);
    <li>
        <a href="@mitem.Url">@mitem.menuTitle</a>
    </li>
    }
    

    或者您可以使用类似这样的方法来显示来自 1 级节点的所有子节点:

    foreach (var m in CurrentPage.AncestorOrSelf(1).Children.Where("hideInNavigation==False"))
    {
      <li>
         <a href="@m.Url">@m.menuTitle</a>
      </li>
    }
    

    此示例还使用 hideInNavigation,它是 True/false 数据类型。

    【讨论】:

    • 别担心,我已经能够解决这个问题。使用 Umbraco 教程视频之一作为指南。谢谢你。
    【解决方案2】:

    我认为跟随会成功。

    @{
        @* Get the root of the website *@
        var root = CurrentPage.AncestorOrSelf(1);
    }
    
    <ul>
        @foreach (var page in root.Children.Where("Visible"))
        {
            <li class="@(page.IsAncestorOrSelf(CurrentPage) ? "current" : null)">
                <a href="@page.Url">@page.Name</a>
            </li>
        }
    </ul>
    

    【讨论】:

      【解决方案3】:

      在呈现网站导航时,您不会在每次加载页面时都在网站上运行查询。一个好主意是执行一次该查询以将动态菜单生成为模型,然后将该模型存储在缓存中。这样,当页面加载时,它只会从内存中获取模型并减少您网站的负载。

      我写了这篇博文,它为您提供了能够执行我上面所说的操作的代码。

      http://www.codeshare.co.uk/blog/umbraco-site-navigation-menu-model-example-in-c-mvc/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多