Многоуровневое выпадающее меню с помощью Razor в Umbraco - PullRequest
2 голосов
/ 29 июля 2011

Я пытаюсь создать многоуровневое выпадающее меню, я использую 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 Iсоздали 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>


}

Синтаксис вышеуказанной бритвы прекрасно работает для AncestorOrSelf (1), который является верхним уровнем, но мне нужны подузлы для продуктов, которые являются AncestorOrSelf (2) Кто-нибудь знает, как этого добиться

Спасибо

1 Ответ

9 голосов
/ 25 августа 2011

Это код бритвы, который я сейчас использую в своем проекте:

@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>
}

Внутренний цикл циклически проходит через все дочерние элементы узла внешнего цикла.

...