SUPINFO International University

SUPINFO Institute of Information Technology
Laboratoire Microsoft




Tous les Articles du Laboratoire Microsoft

Tech-Ed 2004 : ASP.NET 2 Tips & Tricks
Accueil > Articles > Evènements
Auteurs 
Matthieu NICOLESCU
LABORATOIRE SUPINFO DES TECHNOLOGIES MICROSOFT.NET
Assistant Formateur


 Tous les articles de cet auteur

3,7/5

Bien


129030
425/1579

Site Mapping : Faciliter la navigation au sein de votre site

On a vu qu'il était possible de faire de l'URL Mapping en ASP.NET 2. Voyons à présent ce qu'on va appeler le « Site Mapping » qui va vous permettre de mettre en place un système de navigation sur votre site en définissant la hiérarchie de votre site.

Avant de mettre en place le système de navigation, voyons tout d'abord comment créer  une hiérarchie au sein de votre site. Cela va être rendu possible d'un « Site Map Provider ». Nous allons, nous, utiliser le « XmlSiteMapProvider » qui va consister  tout simplement à créer un fichier de mapping au format xml à la racine de votre application Web, fichier qui se nommera « web.SiteMap ». (Vous pouvez créer votre propre provider en implémentant l'interface « ISiteMapProvider »).

Le fichier Xml « web.SiteMap » doit avoir un élément racine qui s'appelle « siteMap » et ensuite il vous suffit d'ajouter des éléments « siteMapNode » à savoir bien sûr qu'un élément « siteMapNode » peut devenir un nœud pour gérer la hiérarchie :

Et voici un exemple décrivant la hiérarchie de notre site exemple :

< siteMap >
        < siteMapNode title = " Accueil " url = " Default.aspx " keywords = " dotnet, asp.net " >
                < siteMapNode title = " Ressources " description = " Ressources " url = " Default.aspx?target=ressources " >
                       < siteMapNode title = " Articles " description = " Articles " url = " Default.aspx?target=articles " />
                       < siteMapNode title = " News " description = " News " url = " Default.aspx?target=news " />
                </ siteMapNode >
                < siteMapNode title = " Admin " url = " Admin " roles = " admin " > </ siteMapNode >
        </ siteMapNode >
</ siteMap >

Maintenant que nous avons la hiérarchie de notre site, voyons comment gérer la navigation. La première solution est d'utiliser les contrôles d'affichage de données d'ASP.NET, et pour cela nous allons utiliser le contrôle « SiteMapDataSource », et comme c'est un contrôle DataSource, nous allons pouvoir utiliser la propriété « DataSourceID » que vous pouvez retrouver sur les contrôle TreeView, ListBow, GridView etc…

Déclaration du contrôle « SiteMapDataSource » :

< asp : sitemapdatasource id ="SiteMapDataSource1" runat ="server" />

Ici pas besoin d'ajouter plus de propriétés sachant que le contrôle va chercher par défaut dans le fichier web.SiteMap.

Utilisation du contrôle avec un treeview, listbox et gridview :

< asp : treeview
   id ="TreeView1"
   runat ="server"
   datasourceid ="SiteMapDataSource1">  
</ asp : treeview >
< asp : listbox
   id ="ListBox1"
   runat ="server"
   datasourceid ="SiteMapDataSource1"
   datavaluefield ="Url" datatextfield ="Title">  
</ asp : listbox >

Ce qui donne à l'affichage :

Dans les contrôles ListBox et GridView, nous ne voyons que l'élément racine car par défaut le contrôle « SiteMapDataSource » va afficher que les éléments se trouvant au niveau courant ou supérieur.

Par exemple, si vous vous trouvez sur la page des News (voir notre fichier Xml au dessus), vous verrez s'afficher dans la listbox les éléments « Accueil, Ressources, News ». Vous pouvez décider d'afficher tous les nœuds du provider SiteMap en modifiant la propriété « SiteMapViewType » du contrôle « SiteMapDataSource » avec comme valeur « Flat » :

Ce qui donnera à l'affichage :

En plus de ces contrôles, vous allez avoir de nouveaux contrôles de navigation dont le contrôle « SiteMapPath » et « Menu » :

Le contrôle « Menu » fonctionne sous le même principe des contrôles que nous avons vu jusque là (listbox, gridview, treeview…) en définissant en DataSourceID votre contrôle « SiteMapDataSource ».

Par contre pour le contrôle « SiteMapPath »,  il vous suffit de déclarer le contrôle « SiteMapPath » dans votre page sans ajouter aucune propriété sachant que le contrôle va prendre par défaut le provider XmlSiteMapProvider web.SiteMap.

Déclaration du contrôle « SiteMapPath » et « Menu » :

<asp:sitemappath
   id ="SiteMapPath1"
   runat ="server">
</asp:sitemappath>
< asp : menu
   id ="Menu1"
   runat ="server"
   datasourceid ="SiteMapDataSource1">
</ asp : menu >

Le contrôle « SiteMapPath » va vérifier à chaque chargement l'url courant pour voir si elle correspond à un nœud « SiteMapNode » du « SiteMap Provider » :


Introduction
1. CrossPage Posting
2. Site Mapping : Faciliter la navigation au sein de votre site
3. API Counters : traquez vos visiteurs
4. Changer les informations du header en ASP.NET 2
5. Url Mapping en ASP.NET 2.0 et 1.1
6. Respecter les standards avec Visual Studio et ASP.NET 2.0
7. Créer un Uploader de Fichier
8. Gérer vos chaînes de connexion
9. Pré Compilation
10. Intégration à IIS
11. Et la suite ?



En Savoir Plus 
Evaluez cet article 


Pour afficher ou poster un commentaire, cliquez sur ce lien : Forum-Microsoft



Retrouvez ci-dessous les autres sections du Laboratoire Microsoft