/ / Utilisation de deux web.sitemap dans un projet - c #, asp.net, webforms, web-config, web.sitemap

Utilisation de deux web.sitemap dans un projet - c #, asp.net, webforms, web-config, web.sitemap

Je veux utiliser deux sites Web différents.plan du site dans une application. (une barre de navigation d'amorçage est créée dans ma page maître, je veux différentes pages de mise en page par défaut, etc.) documentation msdn donc, après avoir fait cela, je ne sais pas trop comment interroger le nouveau web.sitemap car je lis l'original de la manière suivante:

SiteMapNode rootNode = SiteMap.RootNode;
makeNavbar(rootNode.ChildNodes, true, false);
....

Et sa ok ... la barre de navigation son créé tout va bien ici ...

Mais ce que je veux, c'est quelque chose comme:

SiteMapBode rootNode = SiteMap.UseProvider("newSiteMap").RootNode;

évidemment cette fonction n'existe pas ...

Tout ce que je veux, c'est de lire le nouveau web.sitemap sans changer trop de code.

Quelqu'un peut me diriger dans la bonne direction?

Merci d'avance.

Réponses:

0 pour la réponse № 1

Ceci dans votre config.

    <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" />
<add name="XmlSiteMapProvider2" type="System.Web.XmlSiteMapProvider" siteMapFile="secondsitemapname.sitemap" />
</providers>
</siteMap>

La prochaine chose que je fais est simplement d'ajouter asp: sitemapdatasource à la page avec le nom correct que vous avez donné dans le fichier de configuration.

alors si vous avez un asp: menu, un asp: repeater ou tout autre contrôle, vous pouvez utiliser datasourceid pour le connecter avec asp: sitemapdatasource

SiteMapDataSource test = new SiteMapDataSource();
test.Provider.RootNode

0 pour la réponse № 2

Eh bien j'ai trouvé la solution. En utilisant la classe SiteMap comme l’exemple utilisé dans la question, vous pouvez accéder par programme aux différents web.sitemap et lire

SiteMapNode rootNode = SiteMap.Providers["SiteMap2"].RootNode;

Merci à @Davy Quyo qui m'a confirmé la première étape: l'ajout du fournisseur dans web.config