2010-06-03 8 views

Respuesta

4

Si se encuentra en el .NET Framework 3.5, puede utilizar un método de LINQ:

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

Si usted está en .NET 2.0 se puede hacer algo similar: poner los nodos en una lista (genérico) y use Find(...). En la línea de:

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 
} 

De esta manera no tiene que iterar manualmente :) Si esto es "mejor" es otra pregunta.

Cuestiones relacionadas