默认时,ASP.NET 网站导航与描述 Web 站点层次结构的 Web.sitemap 文件(XML)一起工作。但是,对于更全面的 Web 站点导航结构,可能需要更多用于描述导航结构的网站地图文件或网站地图提供者。
首先从应用程序根目录的网站地图开始,为单个站点配置多个网站地图。接着,在 Web.sitemap 文件中将默认网站地图根目录下的提供者配置成默认的网站地图提供者。然后,在 SiteMapNode 对象中进行引用并链接到子网站地图或提供者,具体步骤见下面两个示例。
从父网站地图链接到子网站地图
-
在父网站地图导航结构中需要显示子网站地图的位置创建
SiteMapNode。比如,如果使用默认的XmlSiteMapProvider,请在 Web.sitemap 文件的适当位置添加下例SiteMapNode。<siteMapNode siteMapFile="MySiteMap.sitemap" />
提示:
siteMapFile参数值可以是以下任何一种:-
某个应用程序相对引用(如 ~/MySiteMap.sitemap)。
-
某个虚拟路径(如 /Customers/MySiteMap.sitemap)。
-
某个针对当前网站地图文件相对路径的引用(如 Guests/MySiteMap.sitemap)。
-
从父网站地图链接到自定义网站地图提供者
-
在父网站地图导航结构中需要显示子网站地图的位置创建
SiteMapNode。比如,如果使用默认的XmlSiteMapProvider,请打开 Web.sitemap 文件并在层次结构中的适当位置添加下例SiteMapNode。<siteMapNode provider="SimpleTextSiteMapProvider" />
提示:Web.config 文件中的
provider参数名与提供者的名称是一样的。 -
自定义网站地图提供者必须使用
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>
在 Web.sitemap 文件中配置多个网站地图
前面两个示例演示的网站地图相互链接允许将若干网站地图结构的片段进行整体拼接。做为替代操作,也可以在 Web.config 文件中添加对不同网站地图的引用,从而从根本上使它们变得更像是不同的提供者。这比较适用于 Web 网站需要针对不同的区域使用不同的导航结构时。
为 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)的联合使用可以Company1SiteMap或Company2SiteMap的相关SiteMapProvider属性进行设置。