Как вернуться назад из SiteMap.CurrentNode в SiteMap.RootNode - PullRequest
0 голосов
/ 09 апреля 2009

У меня есть простой файл Sitemap, такой как asp: SiteMapDataSource:

Страница 1> Страница 2> Страница 3

Я хотел бы создать цикл foreach в C #, который генерирует его вместо использования asp: SiteMapPath, потому что мне нужно добавить в него некоторые исключения. Теперь я не могу понять, как сделать цикл в обратном направлении от SiteMap.CurrentNode к SiteMap.RootNode?

1 Ответ

3 голосов
/ 09 апреля 2009

Свойство, которое вы ищете, является 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();
...