FAQ ASP.NET/VB.NET
FAQ ASP.NET/VB.NETConsultez toutes les FAQ
Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 16 juin 2021
Un SiteMap est un système permetant de gérer la navigation d'un site web. Il est fréquent qu'une navigation ait une structure arborescente. ASP.NET, à partir de la version 2.0, fournit des fonctionnalités permettant d'intégrer facilement un SiteMap à son application web.
Cela consiste principalement en :
- Avoir une source de données permettant d'alimenter le site map (sous la forme du pattern provider, l'implémentation par défaut étant la gestion d'un fichier xml). On utilisera le contrôle SiteMapDataSource
- Disposer de contrôles web pour afficher le sitemap du site
Les contrôles disponibles sont :
- SiteMapPath qui permet d'afficher un fil d'ariane (breadcrumb), permettant d'indiquer ainsi à l'utilisateur où il se trouve dans la hiérarchie du site.
- TreeView qui affiche l'arborescence du sitemap
- Menu qui permet d'afficher la navigation sous la forme d'un menu
On utilisera le provider par défaut du contrôle SiteMapDataSource :
<asp:
SiteMapDataSource ID
=
"SiteMapDataSource1"
runat
=
"server"
/>
Il utilise un fichier xml (Web.sitemap) qu'on ajoutera par un bouton droit sur le projet, Add, New Item, Web, Site Map.
Il contiendra la structure hiérarchique du site, en utilisant les noeuds SiteMapNode.
Par exemple le fichier Web.sitemap suivant :
<?xml version="1.0" encoding="utf-8" ?>
<siteMap
xmlns
=
"http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"
>
<siteMapNode
url
=
"~/Default.aspx"
title
=
"Accueil"
>
<siteMapNode
url
=
"~/Page1.aspx"
title
=
"Page 1"
>
<siteMapNode
url
=
"~/Page11.aspx"
title
=
"Page 1.1"
/>
<siteMapNode
url
=
"~/Page12.aspx"
title
=
"Page 1.2"
/>
</siteMapNode>
<siteMapNode
url
=
"~/Page2.aspx"
title
=
"Page 2"
/>
<siteMapNode
url
=
"~/Page3.aspx"
title
=
"Page 3"
/>
</siteMapNode>
</siteMap>
permettra d'avoir une arborescence de ce type :
- Accueil
- Page 1
- Page 1.1
- Page 1.2
- Page 2
- Page 3
L'idée est de créer notre propre SiteMapProvider. Jeff Prosise l'a fait pour nous, vous pouvez aller consulter son article : The SQL Site Map Provider You've Been Waiting For
En général, on place sur la master page les contrôles suivants :
- SiteMapDataSource pour indiquer la source de données
- SiteMapPath pour afficher le fil d'ariane
- TreeView si on veut afficher l'arborescence du site
Par exemple :
<form id
=
"form1"
runat
=
"server"
>
<asp:
SiteMapDataSource ID
=
"SiteMapDataSource1"
runat
=
"server"
/>
<div style
=
"border:solid 1px black;"
>
<asp:
TreeView ID
=
"TreeView1"
runat
=
"server"
DataSourceID
=
"SiteMapDataSource1"
/>
</div>
<div style
=
"border:solid 1px black;"
>
<asp:
SiteMapPath ID
=
"SiteMapPath1"
runat
=
"server"
/>
</div>
<div>
<asp:
ContentPlaceHolder ID
=
"ContentPlaceHolder1"
runat
=
"server"
>
</asp
:
ContentPlaceHolder>
</div>
Notons que le contrôle SiteMapDataSource écrit sous cette forme permet d'utiliser comme source de données le fichier Web.sitemap.
Notons également que le contrôle TreeView a besoin qu'on lui spécifie l'ID du contrôle SiteMapDataSource utilisé.
On utilisera la propriété : SiteMap.CurrentNode.
Cet objet nous permettra d'accéder également au élément de même niveau avec PreviousSibling et NextSibling.
De même, on pourra accéder à l'élément père avec ParentNode et aux enfants avec ChildNodes.
Note : Il est possible d'accéder au noeud racine grâce à SiteMap.RootNode.