Procedura: enumerare i nodi della mappa del sito a livello di codice
Aggiornamento: novembre 2007
Per aggiungere i percorsi di spostamento nel sito alle pagine Web con una quantità minima o nulla di codice, è possibile utilizzare i controlli di spostamento. L'operazione può tuttavia essere eseguita anche a livello di codice. Quando l'applicazione Web viene eseguita, ASP.NET crea un oggetto SiteMap che riflette la struttura della mappa del sito. L'oggetto SiteMap espone a sua volta un insieme di oggetti SiteMapNode che contengono le proprietà per ogni nodo presente nella mappa del sito.
I controlli di spostamento, ad esempio SiteMapPath, utilizzano gli oggetti SiteMap e SiteMapNode per eseguire il rendering dei collegamenti appropriati in modo automatico.
È possibile utilizzare gli oggetti SiteMap e SiteMapNode nel codice per creare una struttura di spostamento personalizzata.
Esempio
Nel codice di esempio seguente viene illustrato come visualizzare i titoli di tutti i nodi figlio per la pagina corrente, purché questa sia inclusa nell'elenco del file di mappa del sito. Se la pagina corrente non è presente nell'elenco del file di mappa del sito, la prima riga di codice che utilizza l'oggetto SiteMap genererà un'eccezione NullReferenceException.
<%@ Page language="VB" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim LabelText As String = ""
' Displays the title of the current node.
Label_CurrentNode.Text = SiteMap.CurrentNode.Title
' Determines if the current node has child nodes.
If (SiteMap.CurrentNode.HasChildNodes) Then
For Each ChildNodesEnumerator As SiteMapNode In SiteMap.CurrentNode.ChildNodes
' Displays the title of each node.
LabelText = LabelText & ChildNodesEnumerator.Title & "<br />"
Next
Else
LabelText = LabelText & "No child nodes."
End If
Label_ChildNodes.Text = LabelText
Catch ex As NullReferenceException
Label_CurrentNode.Text = "The current file is not in the site map."
Catch ex As Exception
Label_CurrentNode.Text = "Generic exception: " & e.ToString()
End Try
End Sub ' Page_Load
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Enumerating Child Site Map Nodes</title>
</head>
<body>
<form id="Form1" method="post" >
<h2>Current Node</h2>
<asp:Label ID="Label_CurrentNode" Runat="Server"></asp:Label>
<h2>Child Nodes</h2>
<asp:Label ID="Label_ChildNodes" Runat="Server"></asp:Label>
<h2>Verify Against Site Map</h2>
<asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="server" />
<asp:TreeView ID="TreeView1" Runat="server" DataSourceID="SiteMapDataSource1">
</asp:TreeView>
</form>
</body>
</html>
<%@ Page language="c#" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
private void Page_Load(object sender, System.EventArgs e)
{
try
{
string LabelText = "";
// Displays the title of the current node.
Label_CurrentNode.Text = SiteMap.CurrentNode.Title;
// Determines if the current node has child nodes.
if (SiteMap.CurrentNode.HasChildNodes)
{
foreach (SiteMapNode childNodesEnumerator in SiteMap.CurrentNode.ChildNodes)
{
// Displays the title of each node.
LabelText = LabelText + childNodesEnumerator.Title + "<br />";
}
}
Label_ChildNodes.Text = LabelText;
}
catch (System.NullReferenceException ex)
{
Label_CurrentNode.Text = "The current file is not in the site map.";
}
catch (Exception ex)
{
Label_CurrentNode.Text = "Generic exception: " + e.ToString();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Enumerating Child Site Map Nodes</title>
</head>
<body>
<form id="Form1" method="post" >
<h2>Current Node</h2>
<asp:Label id="Label_CurrentNode" runat="Server"></asp:Label>
<h2>Child Nodes</h2>
<asp:Label id="Label_ChildNodes" runat="Server"></asp:Label>
<h2>Verify Against Site Map</h2>
<asp:SiteMapDataSource id="SiteMapDataSource1" />
<asp:TreeView id="TreeView1" dataSourceID="SiteMapDataSource1">
</asp:TreeView>
</form>
</body>
</html>
Sicurezza
Come misura di protezione, è possibile nascondere i collegamenti presenti nella struttura di spostamento agli utenti membri di ruoli specificati. Per ulteriori informazioni, vedere Rimozione della protezione della mappa del sito ASP.NET.
Vedere anche
Attività
Procedura: modificare a livello di codice i nodi della mappa del sito in memoria
Concetti
Protezione del sistema di spostamento all'interno dei siti ASP.NET
Protezione dell'accesso ai dati