Выпадающее меню

Я сделал меню для umbraco, но не могу заставить работать раскрывающийся список! Ниже мой код:

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

                    <div class="NavDigiCampuz">
                        <div>
                            <div class="nav nav-list tree">
                                @{                                  
                                    var documentRootNodeId = Model.Content.GetPropertyValue("documentRoot", true); // Fetch recursive document root id.
                                    var selection = Umbraco.TypedContent(documentRootNodeId).Children.Where("Visible"); // Select all nodes below the document root.
                                }

                                @foreach(var item in Model.Content.Ancestor(1).Descendants("menu")){
                                    foreach (var Menus in @item.Descendants("menuItem")){
                                        <li class="MenuItems">@Menus.Name</li>  
                                            foreach (var MenuItems in @Menus.Children){
                                                if(MenuItems.GetPropertyValue("hoofdstukIcoon") != "") {
                                                <li><a class="NormalA" href="@MenuItems.Url"><i class="fa fa-@(MenuItems.GetPropertyValue("hoofdstukIcoon")) fa-fw"></i> @MenuItems.Name</a></li>
                                                    }else {
                                                            <li><a class="NormalA"href="@MenuItems.Url">@MenuItems.Name</a></li>



                                                var childIsActive = false;

                                                    foreach(var sub in @MenuItems.Children){
                                                    if (CurrentPage.Url == sub.Url) {
                                                        childIsActive = true;
                                                    }



                                            <ul class="nav subnav nav-list tree @(childIsActive ? "" : "collapse")">
                                                @foreach(var sub2 in @MenuItems.Children){
                                                    <li @(CurrentPage.Url == sub.Url ? "class=active" : "")>
                                                        <a onclick="parent.resizeParent();" href="@sub.Url">@(sub.GetPropertyValue("hoofdstukMenuTitel") != "" ? sub.GetPropertyValue("hoofdstukMenuTitel") : sub.GetPropertyValue("hoofdstukTitel"))</a>
                                                    </li>
                                                }
                                            </ul>
                                            }
                                        }
                                    }
                                }
                                }
                            </ul>
                            </div>
                        </div>
                    </div>

Выпадающий код должен начинаться с <ul class="nav subnav nav-list tree @(childIsActive ? "" : "collapse")">, но это не работает.

Ниже приведена краткая структура того, какой я хочу видеть свою страницу: Структура меню

Пункт справки 3 должен иметь раскрывающийся список, которого сейчас нет. Что мне не хватает?


person Mik3NL    schedule 08.11.2017    source источник


Ответы (1)


У вас есть некоторые несоответствия в вашей структуре: эта строка:

<div class="nav nav-list tree">

должно быть так:

<ul class="nav nav-list tree">

И я бы удалил <div>, который его обертывает.

Я просто предполагаю, что вы используете что-то вроде бутстрапа, вы используете фреймворк или пользовательский CSS?

Ваше подменю также должно быть вложено в элемент <li>:

else
 {
     <li><a class="NormalA" href="@MenuItems.Url">@MenuItems.Name</a>
         var childIsActive = false;
         foreach (var sub in @MenuItems.Children)
         {
            if (CurrentPage.Url == sub.Url)
            {
             childIsActive = true;
            }

           <ul class="nav subnav nav-list tree @(childIsActive ? "" : "collapse")">
               @foreach (var sub2 in @MenuItems.Children)
               {
                 <li @(CurrentPage.Url == sub.Url ? "class=active" : "")>
                    <a onclick="parent.resizeParent();" href="@sub.Url">@(sub.GetPropertyValue("hoofdstukMenuTitel") != "" ? sub.GetPropertyValue("hoofdstukMenuTitel") : sub.GetPropertyValue("hoofdstukTitel"))</a>
                 </li>
               }
           </ul>
          }
      </li>

}
person Mario Lopez    schedule 09.11.2017