GRATUIT

Vos offres d'emploi informatique

Développeurs, chefs de projets, ingénieurs, informaticiens
Postez gratuitement vos offres d'emploi ici visibles par 4 000 000 de visiteurs uniques par mois

emploi.developpez.com

FAQ ASP.NET/VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireNavigationSite Map

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
Créé le 15 décembre 2009  par nico-pyright(c)

On utilisera le provider par défaut du contrôle SiteMapDataSource :

 
Sélectionnez
 
<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 :

Web.sitemap
Sélectionnez
 
<?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 :

 
Sélectionnez
 
- Accueil
	- Page 1
		- Page 1.1
		- Page 1.2
	- Page 2
	- Page 3
Créé le 15 décembre 2009  par nico-pyright(c)

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

Créé le 15 décembre 2009  par nico-pyright(c)

Lien : 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 :

 
Sélectionnez
 
<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é.

Créé le 15 décembre 2009  par nico-pyright(c)

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.

Créé le 15 décembre 2009  par nico-pyright(c)
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.