使用Umbraco中的Razor进行多级下拉菜单

Mr *_*r A 2 umbraco razor

我正在尝试构建一个多级dropdrown菜单,我正在使用umbraco cms.

我正在寻找的是:

<div id="TopMenu"> 
        <ul class="myMenu"> 
            <li><a href="#">Home</a></li> 
            <li><a href="#">About Us</a></li> 
            <li><a href="#">Products</a>
                    <ul>
                        <li><a href="#">Products1</a></li>
                        <li><a href="#">Products2</a></li>
                        <li><a href="#">Products3</a></li>
                    </ul>
                    </li> 
            <li><a href="#">ContactUs</a></li> 

        </ul> 
    </div><!--TopMenu--> 
Run Code Online (Sandbox Code Playgroud)

在Umbraco中,我创建了cshtml以使其工作:

<ul class="myMenu">
<li><a href="/">Home</a> </li>
@foreach (var page in @Model.AncestorOrSelf(1).Children)
{
    string style = "";
    if (1 == 1) { style = "class=\"current\""; }
    <li><a href="@page.Url" @style>@page.Name</a></li>


}
Run Code Online (Sandbox Code Playgroud)

上面的剃刀语法适用于顶级的AncestorOrSelf(1),但是我需要AncestorOrSelf(2)产品的子节点,是否有人知道如何实现这一点

感谢名单

Gee*_*ron 9

这是我目前在我的项目中使用的剃刀代码:

@foreach (var page in Model.AncestorOrSelf(1).Children.Where("Visible"))
{
   <li><a href="@page.Url">@page.Name</a>
   if (page.Children.Where("Visible").Count() > 0)
   {
      <ul>
         @foreach (var subpage in page.Children.Where("Visible"))
         {
            <li><a href="@subpage.Url">@subpage.Name</a></li>
         }
      </ul>
   }
   </li>
}
Run Code Online (Sandbox Code Playgroud)

内循环遍历外循环节点的所有子节点.

  • +1是的,除了有效的html你的`li`应该在最后一个'}之前关闭.如果你使用umbracoNaviHide你可能想要迭代`... Children.Where("Visible")` (2认同)