2009-02-16 5 views
3

Je veux que mon site ASP.NET ait une chaîne de menu simple appelée Breadcrumbs. J'ai créé Sitemap avec tous les éléments requis et enregistré dans Web.config. Par exemple:Est-il possible d'utiliser Sitemap ASP.NET pour générer du fil d'Ariane?

<siteMap> 
    <siteMapNode url="Default.aspx" title="Home" > 
     <siteMapNode url="hosting/Default.aspx" title="Hosting" /> 
     <siteMapNode url="software/Default.aspx" title="Software"> 
      <siteMapNode url="firefox/Default.aspx" title="Firefox"> 
       <siteMapNode url="Download.aspx" title="Download" /> 
       <siteMapNode url="Support.aspx" title="Support" /> 
      </siteMapNode> 
     </siteMapNode> 
    </siteMapNode> 
</siteMap> 

et a créé un contrôle placé sur Masterpage. Ici, il est code de génération de menu:

protected void Control_Load(Object sender, EventArgs e) 
{ 
    string path = String.Empty; 
    StringCollection list = new StringCollection(); 

    foreach (string str in Request.Url.Segments) 
    { 
     path += str; 
     string link = String.Format("<a href=\"{0}://{1}{2}\">{3}</a>", Request.Url.Scheme, Request.Url.Authority, path, this.names[str]); 
     list.Add(link); 
    } 

    foreach (string str in list) 
    { 
     menu += String.Concat(str, SeparatorLine); 
    } 
    menu = menu.Remove(menu.LastIndexOf(SeparatorLine)); 
} 

Mais il utilise un StringDictionary comme {{ "/", "Home"}, { "hébergement /", "Hébergement"}, { "logiciel /", "Logiciel" } ..}

Comment puis-je utiliser une requête au plan du site au lieu de cela? Ou peut-être quelque chose d'autre, pas Sitemap, mais inventé au préalable.

Répondre

5

Vous pouvez utiliser le contrôle SiteMapPath (devrait être dans la catégorie Navigation de votre boîte à outils). Vérifiez this page pour un tutoriel.

1

Il suffit de définir la propriété SiteMapProvider au fournisseur pour le sitemap que vous souhaitez utiliser pour les miettes de pain et vous serez fixés. Je place généralement le SiteMapPath à l'intérieur d'un div et place le CSS sur le div pour styler le fil d'Ariane.

Un gotcha à regarder cependant. Si vous supprimez tous les nœuds racine dans le sitemap, ils apparaissent toujours dans votre fil d'Ariane. J'ai couru dans ceci en essayant d'employer le même plan de site pour des chapelures et pour le SiteMapDataSource pour une vue d'arbre où je voulais ne pas montrer le noeud de départ.

Bonne chance!

+1

@Tim: Voici un exemple de la façon de masquer les nœuds racines rendus dans un gestionnaire 'OnItemCreated': http://johanleino.wordpress.com/2009/01/11/hiding-the-rootnode-in-a -breadcrumb-control-sitemap-path /. Fondamentalement, il définit la propriété 'Visible' des noeuds à' false', si le noeud est un noeud racine. – Groo

Questions connexes