/ / Verwenden von zwei web.sitemap in einem Projekt - c #, asp.net, webforms, web-config, web.sitemap

Zwei web.sitemap in einem Projekt verwenden - c #, asp.net, webforms, web-config, web.sitemap

Ich möchte zwei verschiedene Webseiten verwenden.Sitemap in einer Anwendung. (Eine Bootstrap-Navbar wird in meiner Masterseite erstellt, ich möchte andere Layout-Standardseiten usw.). So sagt msdn, dass Sie eine neue web.sitemap und einen Schlüssel in der web.config hinzufügen müssen msdn Dokumentation Nachdem ich das getan habe, bin ich nicht sicher, wie ich die neue web.sitemap abfragen sollte, weil ich das Original wie folgt las:

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

Und es ist in Ordnung ... die Navbar hier ist alles in Ordnung ...

Aber was ich will ist so etwas wie:

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

offensichtlich existiert diese Funktion nicht ...

Alles, was ich möchte, ist es, die neue web.sitemap zu lesen, ohne zu viel Code zu ändern.

Kann mir jemand in die richtige Richtung zeigen?

Danke im Voraus.

Antworten:

0 für die Antwort № 1

Dies in deiner Konfig.

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

Als nächstes fügen Sie einfach asp: sitemapdatasource der Seite mit dem richtigen Namen hinzu, den Sie in der Konfigurationsdatei angegeben haben.

Wenn Sie ein asp: menu, asp: repeater oder ein anderes Steuerelement haben, können Sie datasourceid verwenden, um es mit der asp: sitemapdatasource zu verbinden

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

0 für die Antwort № 2

Nun, ich habe die Lösung gefunden. Mit der SiteMap-Klasse wie in dem in der Frage verwendeten Beispiel können Sie programmgesteuert auf die verschiedenen web.sitemap-Elemente zugreifen und sie lesen

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

Danke an @Davy Quyo, der mir den ersten Schritt bestätigt: den Provider in web.config hinzufügen