Umbraco 7动态菜单

时间:2016-02-24 19:14:28

标签: asp.net-mvc umbraco7

美好的一天! 在Umbraco工作并努力在Umbraco创建动态菜单。 应使用menuName调用菜单li。

它适用于第一个循环(称为item.menuName的静态菜单),但不适用于second - node.menuName。 node.Name有效,但.menuName没有。为什么呢?

谢谢!

    var homePage = CurrentPage.AncestorsOrSelf(1).First();
    var menuItems = homePage.Children.Where("UmbracoNaviHide == false");

<ul class="menu">

    @foreach (var item in menuItems)
    {
        var childrenItems = item.Children.Where("UmbracoNaviHide == false");
        <li class="@(CurrentPage.Id == item.Id ? "sel" : null)">
            <a href="@item.Url"><h4>@item.menuName</h4></a>
            @createSubmenu(childrenItems, item.Id)
        </li>
    }
</ul>

@helper createSubmenu(IEnumerable<IPublishedContent> nodes, int? parentId) {
    if (nodes.Count() > 0){
        <ul>
        @foreach (var node in nodes)
        {
            var childrenItems = node.Children.Where("UmbracoNaviHide == false");
            <li class="@(CurrentPage.Id == node.Id ? "sel" : null)">
                <a href="@node.Url"><h5>@node.menuName</h5></a>
                @createSubmenu(childrenItems, node.Id)
            </li>
        }
        </ul>
    }
}

1 个答案:

答案 0 :(得分:1)

如果您不使用强烈风格的视图,则CurrentPage的{​​{1}}属性为UmbracoTemplatePage,表示dynamic可供访问。

但是,您的@item.menuItem帮助程序会将动态广告投放到没有成员createSubmenu的{​​{1}}。您需要使用IPublishedContent方法:

menuName