0

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

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

没关系...导航栏在这里创建的一切都很好...

但我想要的是这样的:

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

显然该功能不存在...

我只希望它在不更改太多代码的情况下阅读新的 web.sitemap。

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

提前致谢。

4

2 回答 2

0

这在你的配置中。

    <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
于 2015-09-09T10:51:17.853 回答
0

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

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

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

于 2015-09-09T14:45:13.517 回答