【发布时间】:2011-01-25 18:49:23
【问题描述】:
我有一个从 web.sitemap 文件构建的自定义菜单导航,第一行是这样的:
SiteMapNodeCollection topLevelNodes = SiteMap.RootNode.ChildNodes;
这行得通 - 它从 web.sitemap 文件中获取所有顶级节点,并允许我查看每个 SiteMapNode 并执行操作。
但是,现在我希望能够创建多个 web.sitemap 文件,然后以编程方式确定要使用哪个 web.sitemap 文件,但我似乎不知道如何执行此操作。我假设我可以创建一个自定义 SiteMapProvider 来执行逻辑以确定要加载哪个 web.sitemap 文件,或者我有多个提供程序,每个提供程序的 SiteMapFile 属性设置为特定的 *.sitemap 文件,然后切换在我访问 SiteMap.RootNode 之前以编程方式提供程序。
我认为拥有一个自定义提供程序可能更容易,然后覆盖它查找实际物理站点地图文件位置的部分,但我不清楚我将如何做到这一点
我搜索了很多,但大多数答案似乎是关于标准站点地图路径控件等,以及如何设置 SiteMapDataSource,我认为这与我的方法无关。
【问题讨论】:
-
您不应该切换/更改任何东西...相反,您需要一直像这样访问 RootNode SiteMap.Providers[someProvider].RootNode 和 someProvider 应该在运行时被解析。
-
哦,没想到,我明天试试,听起来好像行。
标签: asp.net custom-controls sitemap sitemapprovider web.sitemap