2012-04-05 10 views
1

Ich habe den folgenden Code, der ein Untermenü basierend auf dem aktuellen Dokument erstellt. Das Dokument enthält untergeordnete Elemente, mit denen ich ein Untermenü erstellen kann.Wie man den aktuellen Untermenüpunkt in Umbraco mit Rasiererskript style

Wie überprüfe ich, wann ich auf einem aktuellen Artikel bin? Ich möchte einen Gegenstand im Untermenü stylen, wenn dieser Gegenstand der aktuelle ist.

Ich weiß, ich kann if (Model.Id == page.Id) tun, um den aktuellen Artikel zu finden, aber das funktioniert nicht mit Dokumenten.

Dies ist der Code, den ich ändern möchte.

@foreach (var node in new Document(999).Children) 
{ 
    <li>@node.Id</a> 
     @{ var mychildren = node.Children; 
      if (mychildren.Count() > 0) 
      { 
      <ul> 
       <li>@node.id</a></li> 
       @foreach (var snode in mychildren) 
       { 
        <li>@snode.id</a></li> 
       } 
      </ul> 
     } 
    </li> 
    } 
} 

Antwort

4

Warum verwenden Sie nicht DynamicNode anstelle von Document, dann verwenden Sie einen Helfer, um nach der Klasse zu suchen und sie hinzuzufügen? Beispiel:

<ul> 
@foreach (var node in new Library.NodeNyId(999).Children) 
{ 
    <[email protected](node)><a href="@node.NiceUrl">@node.Name</a></li> 
    @{ 
     var mychildren = node.Children; 
     if (mychildren.Count() > 0) 
     { 
     <ul> 
      @foreach (var snode in mychildren) 
      { 
       <[email protected](snode)><a href="@snode.NiceUrl">@snode.Name</a></li> 
      } 
     </ul> 
     } 
    } 
    </li> 
    } 
} 
</ul> 

@helper getClasses(dynamic node) 
{ 
    string classes = ""; 

    if (Model.Id == node.Id) 
    { 
     classes = " class=\"active\""; 
    } 

    @Html.Raw(classes); 
} 

(Die Library.NodeById Methode gibt ein DynamicNode Objekt.)

+0

Danke. Du hast meinen Tag gerettet. Das habe ich gesucht! –

Verwandte Themen