配置多个站点地图和站点地图提供程序
默认情况下,ASP.NET 站点导航使用一个名为 Web.sitemap 的 XML 文件,该文件描述网站的层次结构。但是,您可能要使用多个站点地图文件或站点地图提供程序来描述整个网站的导航结构。
若要为一个站点配置多个站点地图,请从应用程序根目录中的站点地图开始。然后,在 Web.config 文件中将根提供程序配置为默认站点地图提供程序。最后,在 SiteMapNode 对象中引用子站点地图或提供程序,从而链接到这些地图或提供程序,如下面的两个示例所示。
从父站点地图链接到子站点地图文件
-
在父站点地图的导航结构中,在要显示子站点地图的位置创建一个 SiteMapNode。例如,如果使用的是默认的 XmlSiteMapProvider,则将下面的 SiteMapNode 添加到 Web.sitemap 文件的相应位置。
注意 siteMapFile 属性可以采取下面的某一种形式:
-
一个与应用程序相关的引用,如 ~/MySiteMap.sitemap。
-
一个虚拟路径,如 /Customers/MySiteMap.sitemap。
-
一个相对于当前站点地图文件位置的路径引用,如 Guests/MySiteMap.sitemap。
有关创建站点地图文件的更多信息,请参见 ASP.NET 站点地图。
-
从父站点地图链接到自定义站点地图提供程序
-
在父站点地图的导航结构中,在要显示子站点地图的位置创建一个 SiteMapNode。例如,如果使用的是默认的 XmlSiteMapProvider,则打开您的 Web.sitemap 文件并将下面的 SiteMapNode 添加到层次结构中的相应位置。
注意 provider 属性与 Web.config 文件中的提供程序的 name 属性相对应。
-
必须使用 add 属性将自定义站点地图提供程序添加到 Web.config 文件中。下面的代码添加名为 SimpleTextSiteMapProvider 的自定义提供程序,但保持 XmlSiteMapProvider 作为默认站点地图提供程序。
<configuration> <!-- other configuration sections --> <system.web> <!-- other configuration sections --> <siteMap defaultProvider="XmlSiteMapProvider"> <providers> <add name="SimpleTextSiteMapProvider" type="Samples.AspNet.SimpleTextSiteMapProvider,Samples.AspNet" siteMapFile = "siteMap.txt" /> </providers> </siteMap> </system.web> </configuration>
有关创建自定义站点地图提供程序的更多信息,请参见实现 ASP.NET 站点地图提供程序。
在 Web.config 文件中配置多个站点地图
如上述两个示例所示,将站点地图链接在一起可以从许多块地图生成一个站点地图结构。或者,您还可以在 Web.config 文件中添加对不同站点地图的引用,就是使它们看起来像是不同的提供程序。在网站的不同区域需要不同的导航结构时,这十分有用。
在 Web.config 文件中配置多个站点地图
-
在 Web.config 文件中,找到 <siteMap> 部分。如果该部分不存在,则使用下面的代码。否则,只需插入 <add> 部分。
<configuration> <!-- other configuration sections --> <system.web> <!-- other configuration sections --> <siteMap defaultProvider="XmlSiteMapProvider"> <providers> <add name="Company1SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Company1/Company1.sitemap" /> <add name="Company2SiteMap" type="System.Web.XmlSiteMapProvider" siteMapFile="~/Company2/Company2.sitemap" /> </providers> </siteMap> </system.web> </configuration>
假定存在 ~/Company1/Company1.sitemap 和 ~/Company2/Company2.sitemap 文件,则您现在可以将它们与导航 API 成员和导航控件(如 SiteMapPath、TreeView 和 Menu)一起使用,方法是将相关的 SiteMapProvider 属性设置为 Company1SiteMap 或 Company2SiteMap。
有关向网页添加导航控件的更多信息,请参见如何:添加简单的站点导航。