在默认情况下,ASP.NET 站点导航使用一个名为 Web.sitemap 的 XML 文件,该文件描述网站的层次结构。但是,您可能要使用多个站点地图文件或站点地图提供程序来描述整个网站的导航结构。
在默认情况下,ASP.NET 站点导航使用一个名为 Web.sitemap 的 XML 文件,该文件描述网站的层次结构。但是,您可能要使用多个站点地图文件或站点地图提供程序来描述整个网站的导航结构。
若要为一个站点配置多个站点地图,在 Web.config 文件中配置多个站点地图
在 Web.config 文件中,找到 <siteMap> 部分。如果该部分不存在,则使用下面的代码。否则,只需插入 <add> 部分。
Code
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<compilation debug="true" />
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<authentication mode="Windows" />
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<siteMap>
<providers>
<add siteMapFile="~/Admin/Web.sitemap" name="MyAspNetXmlSiteMapProvider" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</siteMap>
</system.web>
</configuration>
如果你有多个sitemap可以加多个<add>,siteMapFile 是指定你所用地Sitemap,name请不要用相同的name(默认的是ASPNetXmlSiteMapProvider),因为name 相同就会覆盖前一个。配置文件就写好了
在页面中如果是SiteMapPath只用把配置文件name 指定给它地SiteMapProvider属性就行了
如果是TreeView那就要配置它的SiteMapDataSource的siteMapProvider属性
下面看一代码:
Code
<asp:SiteMapPath ID="SiteMapPath1" runat="server" SiteMapProvider="MyAspNetXmlSiteMapProvider">
</asp:SiteMapPath>
Code
<asp:TreeView ID="TreeView2" runat="server" DataSourceID="SiteMapDataSource2">
</asp:TreeView>
<asp:SiteMapDataSource ID="SiteMapDataSource2" runat="server" SiteMapProvider="MyAspNetXmlSiteMapProvider" />
如果你不指定他们的SiteMapProvider 他就会使用默认的如下:
Code
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</asp:SiteMapPath>
这样就实现了一个站点可以使用多个Web.siteMap了。还有另外一种方式实现那就是重写它的提供者,这种方式稍微有点复杂,在下次文章中就会写到。
源代码下载