2009-02-24 5 views
2

J'ai un web.sitemap comme ceci:Puis-je ignorer des noeuds dans le contrôle de menu ASP.NET?

<siteMapNode url="~/Default.aspx" title="Home" description="" > 
    <siteMapNode title="Node 1" description=""> 
     <siteMapNode url="" title="Node 1-1" description="" /> 
     <siteMapNode url="" title="Node 1-2" description="" /> 
    </siteMapNode> 
    <siteMapNode title="Node 2" description=""> 
     <siteMapNode url="" title="Node 2-1" description="" /> 
     <siteMapNode url="" title="Node 2-2" description="" /> 
    </siteMapNode> 
</siteMapNode> 

Si j'utilise un contrôle de menu ASP.NET (avec StaticDisplayLevels = 2), je reçois ceci:

| Accueil | Noeud 1 | Nœud 2 |

Y at-il une propriété pour sauter "Home" et obtenir ce menu (à partir de ce plan du site):

| Noeud 1 | Nœud 2 |

?

Répondre

6

Si vous utilisez SiteMapsDataSource, vous pouvez ignorer le nœud racine en définissant la propriété ShowStartingNode sur false.

+0

Super, merci. La propriété est dans la source de données, pas le contrôle du menu où je cherchais – juan

+0

Je devais aussi passer StaticDisplayLevels de 2 à 1, puisque le nœud de départ ne montre pas maintenant – juan

1

Si vous n'êtes pas déjà utilisez un SiteMapDataSource pour alimenter le Menu, vous pouvez le faire et définir sa propriété à ShowStartingNodefalse (et, comme il est indiqué dans le commentaire ci-dessus, décrémenter le StaticDisplayLevels par 1, puisque vous supprimez un niveau) comme ceci:

<asp:SiteMapDataSource ID="MenuSource" runat="server" ShowStartingNode="false" /> 

Bien sûr, cela ne fonctionne que pour le nœud racine. Pour ignorer d'autres nœuds ou des niveaux entiers de nœuds, il est nécessaire de masser le Xml source avant de remplir le Menu (par exemple, utilisez xslt pour supprimer une classe de nœuds).