2017-08-22 1 views
0

J'essaie de créer une liste déroulante dans Umbraco 7, en utilisant le générateur de requête. La liste déroulante fait partie d'une barre de navigation, qui contient également des liens vers d'autres pages. La page contient du HTML avec du code Razor.Affichage de la liste déroulante des liens avec le générateur de requête

@{ 
          var selection = Model.Content.Site().FirstChild("Sprog").Children() 
               .Where(x => x.IsVisible()); 
         } 
         <ul class="sf-menu well" data-type="navbar"> 
          @foreach(var item in selection){ 
           if(item.Name == "Sommerhuse") { 
            <li> 
             <a href="@item.Url">Sommerhuse</a> 
              @{ 
               var selection2 = Umbraco.TypedContent(1090).Children() 
                    .Where(x => x.IsVisible()); 
              } 
              <ul> 
               @foreach(var sommerhus in selection2){ 
                <li> 
                 <a href="@sommerhus.Url">@sommerhus.Name</a> 
                </li> 
               } 
              </ul> 
            </li> 
           } else { 
            <li> 
            <a href="@item.Url">@item.Name</a> 
           </li> 
           } 

          } 
         </ul> 

J'ai essayé nicher un autre générateur de requêtes avec le contenu que j'ai besoin pour le menu déroulant dans mon navbar générateur de requêtes et itérer que

Mais cela ne fonctionne toujours pas créer le menu déroulant. Au lieu de cela, il retourne juste un lien statique, où la liste déroulante devrait être affichée. Dans mon prototype HTML, la liste déroulante fonctionne très bien avec ce code.

<nav class="nav pull-right"> 
         <ul class="sf-menu well" data-type="navbar"> 
          <li class="active"> 
           <a href="index.html">Forside</a> 
          </li> 
          <li> 
           <a href="index-1.html">Lejebetingelser</a> 

          </li> 
          <li> 
           <a href="index-2.html">Sommerhuse</a> 
           <ul> 
            <li> 
             <a href="sommerhus.html">Blokhus</a> 
            </li> 
            <li> 
             <a href="#">Hvide Sande</a> 
            </li> 
            <li> 
             <a href="#">Langeland</a> 
            </li> 
            <li> 
             <a href="#">Marielyst</a> 
            </li> 
            <li> 
             <a href="#">Ebeltoft</a> 
            </li> 
            <li> 
             <a href="#">Rørvig</a> 
            </li> 
            <li> 
             <a href="#">Bogense</a> 
            </li> 
           </ul> 
          </li> 

          <li class=""> 
           <a href="index-4.html">Kontakt</a> 
          </li> 
          <li> 

          </li> 
         </ul> 
        </nav> 

Toutes mes excuses pour la mauvaise mise en forme, pour une raison quelconque Visual Studio refuse de format automatique .cshtml fichiers.

Répondre

0

Vous n'avez pas le <nav class="nav pull-right"> dans votre script de rasoir. Conseil: ne comparez pas sur le nom d'une page, car cela entraînera la rupture de votre liste déroulante si l'éditeur de contenu change le nom du nœud.

if(item.Name == "Sommerhuse") { // BAD IDEA 

utiliser plutôt les documentTypeAlias ​​(si elle est un autre type de document)

if(item.DocumentTypeAlias == "aliasOfTheDocumentType") { // much safer 

Cela ne fonctionnera que si la page a un type de cours de document spécial.