默認情況下,ASP.Net 網站導航使用一個名為 Web.sitemap 的 XML 文件,該文件描述網站的層次結構。但是,您可能要使用多個站點地圖文件或站點地圖提供程序來描述整個網站的導航結構。
例如,您可以具有引用子站點地圖的主站點地圖。主站點地圖可以是:
<?XML version="1.0" encoding="utf-8" ?>
<siteMap XMLns="http://schemas.microsoft.com/ASPNet/SiteMap-File-1.0" >
<siteMapNode title="Home Page" description="">
<siteMapNode title="First Level 1" description="" />
<siteMapNode title="First Level 2" description="">
<siteMapNode title="Second Level 1" description=""/>
<siteMapNode title="Second Level 2" description=""/>
</siteMapNode>
<siteMapNode siteMapFile="child.sitemap" />
</siteMapNode>
</siteMap>
子站點地圖可以是:
<?XML version="1.0" encoding="utf-8" ?>
<siteMap XMLns="http://schemas.microsoft.com/ASPNet/SiteMap-File-1.0" >
<siteMapNode title="Child First Level 1" description="">
<siteMapNode title="Child Second Level 1" description="" />
<siteMapNode title="Child Second Level 2" description="" />
<siteMapNode title="" description="" />
</siteMapNode>
</siteMap>
從兩個站點地圖生成的菜單將顯示如下:
Home Page
First Level 1
First Level 2
Second Level 1
Second Level 2
Child First Level 1
Child Second Level 1
Child Second Level 2
若要為一個網站配置多個站點地圖,請從應用程序根目錄下的站點地圖開始。在 Web.config 文件中將根提供程序配置為默認的站點地圖提供程序。然後,通過在 SiteMapNode 對象中引用子站點地圖或提供程序來鏈接到它們。
一、從父站點地圖鏈接到子站點地圖文件
在父站點地圖的導航結構中,在要顯示子站點地圖的位置創建一個 SiteMapNode。
例如,如果使用的是默認的 XMLSiteMapProvider 類,則將下面的 SiteMapNode 添加到 Web.sitemap 文件中的相應位置。
<siteMapNode siteMapFile="MySiteMap.sitemap" />
siteMapFile 屬性可以采取下面的某一種形式:
·一個與應用程序相關的引用,如 ~/MySiteMap.sitemap。
·一個虛擬路徑,如 /Customers/MySiteMap.sitemap。
·一個相對於當前站點地圖文件位置的路徑引用,如 Guests/MySiteMap.sitemap。
說明: 當指定 siteMapFile 屬性時,
不要為 siteMapNode 元素提供 Url、title 或 description 屬性。
二、從父站點地圖鏈接到自定義站點地圖提供程序
1、在父站點地圖的導航結構中,在要顯示子站點地圖的位置創建一個 SiteMapNode。
例如,如果使用的是默認的 XMLSiteMapProvider 類,則打開 Web.sitemap 文件並將下面的 SiteMapNode 添加到層次結構中的相應位置:
<siteMapNode provider="SimpleTextSiteMapProvider" />
說明: provider 屬性與 Web.config 文件中的提供程序的 name 屬性相對應。
2、使用 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.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>
通過此配置,您可以與導航 API 成員和導航控件(如 SiteMapPath、TreeVIEw 和 Menu)一起使用 ~/Company1/Company1.sitemap 和 ~/Company2/Company2.sitemap 文件。為此,需要將相關 SiteMapProvider 屬性設置為 Company1SiteMap 或 Company2SiteMa
p。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.Net/dodream/archive/2009/12/18/5029809.ASPx