HOW TO:設定多個網站導覽和網站導覽提供者
更新:2007 年 11 月
根據預設,ASP.NET 站台巡覽會使用名為 Web.sitemap 的 XML 檔,這個檔案會描述網站的階層架構。但是,您可能想要使用多個網站導覽檔案或網站導覽提供者,描述整個網站的巡覽結構 (Navigation Structure)。
例如,您可以有參考子網站導覽的主網站導覽。主網站導覽可以是下列項目:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="https://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="https://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 物件中參考子網站導覽或提供者以進行連結。
若要從父網站導覽連結至子網站導覽檔案
從父網站導覽中,在您要顯示子網站導覽的巡覽結構 (Navigation Structure) 位置中建立 SiteMapNode。
舉例來說,如果您正在使用預設 XmlSiteMapProvider 類別,請將下列 SiteMapNode 加入至 Web.sitemap 檔案中的適當位置。
<siteMapNode siteMapFile="MySiteMap.sitemap" />
siteMapFile 屬性 (Attribute) 可為下列形式的其中一種:
相對應用程式的參考,例如 ~/MySiteMap.sitemap。
虛擬路徑,例如 /Customers/MySiteMap.sitemap。
相對於目前網站導覽檔案位置的路徑參考,例如 Guests/MySiteMap.sitemap。
注意事項: 指定 siteMapFile 屬性 (Attribute) 時,請勿為 siteMapNode 項目提供 Url、title 或 description 屬性。
如需建立網站導覽檔案的詳細資訊,請參閱 ASP.NET 網站導覽。
若要從父網站導覽連結至自訂網站導覽提供者
從父網站導覽中,在您要顯示子網站導覽的巡覽結構 (Navigation Structure) 位置中建立 SiteMapNode。
舉例來說,如果您正在使用預設 XmlSiteMapProvider 類別,請開啟 Web.sitemap 檔案,並在階層架構中的適當位置加入下列 SiteMapNode。
<siteMapNode provider="SimpleTextSiteMapProvider" />
注意事項: provider 屬性 (Attribute) 對應至 Web.config 檔案中提供者的 name 屬性 (Attribute)。
使用 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。
如需將巡覽控制項加入至網頁的詳細資訊,請參閱 HOW TO:加入簡單的網站巡覽。