0

我是 Umbraco CMS 的新手,最近开始使用它进行编码。我的页面结构是这样的在此处输入图像描述

现在我已经编写了这样的代码,以根据我在 Umbraco 论坛中找到的代码生成动态导航。但是在输出中它只给出'Home'作为链接而不是其他链接。原因是我这样写它 { var homeNode = Model.AncestorOrSelf(1); 并且它只返回主页而不是其他页面。我也尝试过使用这个 Model.AncestorOrSelf()。但它给出了相同的结果。

<nav>
    <ul>

        @{ var homeNode = Model.AncestorOrSelf(1); }

        <li><a href="@homeNode.Url" class="@Library.If(homeNode.Id == Model.Id, "selected", "")">@homeNode.Name</a></li>

        @foreach (var page in Model.Children.Where("Visible"))
        {
            var isSelected = false;
            if (Model.Id == page.Id || (Model.Parent != null && Model.Parent.Id == page.Id && Model.NodeTypeAlias != "Textpage"))
            {
                isSelected = true;
            }

            <li>
                <a href="@page.Url" class="@Library.If(isSelected, "selected", "")">@page.Name</a>

                <!-- If the page has child nodes (2nd level) that are visible and docTypeAlias is Textpage (textpages) -->
                @if (page.Textpages.Where("Visible").Count() > 0)
                {
                    <ul>
                        @foreach (var childPage in page.Children.Where("Visible"))
                        {
                            <li><a href="@childPage.Url" class="@Library.If(childPage.Id == Model.Id, "selected", "")">@childPage.Name</a></li>
                        }
                    </ul>
                }
            </li>
        }
    </ul>
</nav>

遍历这个的正确表达是什么。

谢谢并恭祝安康

乌帕尔

4

1 回答 1

0

正确,所以您想要的第一件事是将您的站点层次结构更改为:

Home
|-- About Us
|-- Contact Us
|-- Services

您可以在Document Types中,在主节点的文档类型中的Settings下找到Structure选项卡以添加允许的节点子节点类型,以使主节点具有您拥有的 3 种类型的允许子节点。

接下来,您将希望此代码到达您的主节点:

var homeNode = Model.Content.AncestorOrSelf("Site");

其中“站点”是您的主节点的文档类型。

接下来,您可以准备要循环的数据:

var menuItems = homeNode.children.Where(x => x.IsVisible());

最后,您可以将循环更改为:

@foreach (var page in menuItems)

这应该可以帮助您使其正常工作。

于 2014-03-11T02:54:17.557 回答