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

时间:2011-07-29 14:31:22

标签: razor umbraco

我正在尝试构建一个多级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--> 

在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>


}

Above razor语法适用于AncestorOrSelf(1),它是顶级,但我需要产品的子节点是AncestorOrSelf(2),有没有人知道如何实现这个

感谢名单

1 个答案:

答案 0 :(得分: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>
}

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