2009-04-09 8 views
0

Je simple Plan du site comme celui-ci de asp: SiteMapDataSource:Comment puis-je boucle arrière de SiteMap.CurrentNode à SiteMap.RootNode

Page 1> Page 2> Page 3

Je voudrais créer foreach boucle en C# qui le génère à la place pour utiliser asp: SiteMapPath car j'ai besoin d'ajouter quelques exceptions. Maintenant, je ne peux pas comprendre comment faire une boucle en arrière de SiteMap.CurrentNode à SiteMap.RootNode?

Répondre

3

La propriété que vous recherchez est SiteMapNode.ParentNode

SiteMapNode currentNode = SiteMap.CurrentNode; 
SiteMapNode rootNode = SiteMap.RootNode; 
Stack<SiteMapNode> nodeStack = new Stack<SiteMapNode>(); 

while (currentNode != rootNode) 
{ 
    nodeStack.Push(currentNode); 

    currentNode = currentNode.ParentNode; 
} 

// If you want to include RootNode in your list 
nodeStack.Push(rootNode); 

SiteMapNode[] breadCrumbs = nodeStack.ToArray(); 
+0

Merci presque de travail. Mais comment puis-je inverser cette boucle que la sortie commence à partir du nœud actuel et non de la racine? – jpkeisala

+0

Utilisez une pile et poussez() chaque noeud sur la pile. Stack <>. ToArray() retournera alors un tableau dans l'ordre que vous recherchez. –

+0

J'ai mis à jour l'exemple pour inclure la pile –