Posso modificare dinamicamente i nomi delle pagine visualizzate in un controllo SiteMapPath?

Utente HTML.it
chiede

Posso modificare dinamicamente i nomi delle pagine visualizzate in un controllo SiteMapPath?

Redazione HTML.it
risponde

Quando si usano pagine dinamiche, è possibile che il titolo di una pagina venga determinato solo in fase di esecuzione (ad esempio, può essere il nome di un prodotto prelevato da un database di articoli). In una situazione del genere, si vorrebbe fare in modo che il controllo SiteMapPath cambi dinamicamente il suo contenuto mostrando di volta in volta le stringhe corrette. Per fare questo, tuttavia, non si può usare la proprietà SiteMap.CurrentNode.Title, perché essa è di sola lettura. La soluzione consiste nel gestire l’evento SiteMap.SiteMapResolve, facendogli restituire un nuovo oggetto SiteMapNode con il titolo desiderato:

protected void Page_Load(object sender, EventArgs e)   
{        
    SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve); 
} 

private SiteMapNode SiteMap_SiteMapResolve(Object sender, SiteMapResolveEventArgs e)  
{ 
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
    currentNode.Title = "Titolo dinamico";

    return currentNode; 
}

In questo esempio, il nome della pagina corrente nel controllo SiteMapPath, indipendentemente da come è stato impostato nel file web.sitemap, sarà modificato in “Titolo dinamico”.