2010-06-03 7 views

risposta

4

Se siete su .NET Framework 3.5, è possibile utilizzare un metodo LINQ:

SiteMapNodeCollection pages = SiteMap.RootNode.GetAllNodes(); 
SiteMapNode myPage = pages.SingleOrDefault(page => page.Url == "somePageUrl"); 
1

Se siete su .NET 2.0 è possibile fare qualcosa di simile: mettere i nodi in una lista (generico) e utilizzare Find(...). Lungo le linee di:

string urlToLookFor = "myPageURL"; 
List<SiteMapNode> myListOfNodes = new 
     List<SiteMapNode>(SiteMap.RootNode.GetAllNodes()); 
SiteMapNode foundNode = myListOfNodes.Find(delegate(SiteMapNode currentNode) 
{ 
    return currentNode.Url.ToString().Equals(urlToLookFor); 
}); 

if(foundNode != null) { 
    ... // Node exists 
} 

In questo modo non c'è bisogno di iterare manualmente :) Se questa è la "migliore" è un'altra questione.

Problemi correlati