Comment : énumérer par programme des nœuds sitemap
Mise à jour : novembre 2007
Vous pouvez utiliser des contrôles de navigation pour ajouter la navigation de site à vos pages Web avec peu ou pas de code, mais vous pouvez également utiliser par programme la navigation de site. Lorsque votre application Web s'exécute, ASP.NET crée un objet SiteMap qui reflète la structure du plan de site. L'objet SiteMap, ensuite, expose une collection d'objets SiteMapNode qui contiennent des propriétés pour chaque nœud sitemap.
Les contrôles de navigation tels que le contrôle SiteMapPath, utilisent les objets SiteMap et SiteMapNode pour restituer automatiquement les liens appropriés.
Vous pouvez utiliser les objets SiteMap et SiteMapNode dans votre propre code pour créer la navigation personnalisée.
Exemple
L'exemple de code suivant explique comment afficher les titres de tous les nœuds enfants pour la page actuelle, tant que la page actuelle est répertoriée dans le fichier sitemap. Si celle-ci n'est pas répertoriée dans le fichier sitemap, la première ligne de code qui utilise l'objet SiteMap provoquera une exception 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>
Sécurité
Vous pouvez masquer les liens de votre structure de navigation aux utilisateurs dans les rôles de sécurité spécifiés. Pour plus d'informations, consultez Suppression de la sécurité sitemap ASP.NET.
Voir aussi
Tâches
Comment : modifier par programme des nœuds sitemap dans la mémoire
Concepts
Sécurisation de la navigation de site ASP.NET
Sécurisation de l'accès aux données
Autres ressources
Sécurité des applications ASP.NET dans les environnements hébergés