在一个项目中使用两个 web.sitemap

Using two web.sitemap in a project

我想在一个应用程序中使用两个不同的 web.sitemap。 (在我的母版页中创建了一个 bootstrap 导航栏,我想要不同的布局默认页面等)所以 msdn 说你必须在 web.config [=13] 中添加一个新的 web.sitemap 和一个键=] 所以在这样做之后我不确定如何查询新的 web.sitemap 因为我阅读了原始的如下:

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

没问题...这里创建的导航栏一切正常...

但我想要的是:

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

显然该函数不存在...

我只希望它阅读新的 web.sitemap 而无需更改太多代码。

有人能指出我正确的方向吗?

提前致谢。

这在你的配置中。

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

接下来我要做的就是将 asp:sitemapdatasource 添加到具有您在配置文件中提供的正确名称的页面。

然后如果您有 asp:menu、asp:repeater 或任何其他控件,您可以使用 datasourceid 将其与 asp:sitemapdatasource

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

好吧,我找到了解决方案。使用 SiteMap class 就像问题中使用的示例一样,您可以以编程方式访问不同的 web.sitemap 并阅读

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

感谢@Davy Quyo 确认了我的第一步:将提供商添加到 web.config