網站導覽提供者--ASP.NET 2.0中的網站導覽提供者暴露了應用程式中的頁面的導航資訊,它允許你單獨地定義網站的結構,而不用考慮頁面的實際物理布局。預設的網站導覽提供者是基於XML的,但是你也可以通過編寫自訂的提供者,從任何後端位置暴露這些資訊。
網站導覽API--網站導覽API用於在應用程式的代碼中訪問網站導覽資訊,它摘錄了導航資訊儲存的細節。你可以使用API來編程訪問應用程式的瀏覽節點。
導航控制項--導航控制項為頁面之間的導航提供了通用的UI,例如樹視圖、菜單和breadcrumb("麵包屑",一種顯示當前所在頁面的控制項)。這些控制項利用ASP.NET 2.0中的網站導覽服務來檢索你給網站定義的結構。SiteMapDataSource控制項還允許你把其它UI控制項綁定到網站導覽資料。
網站經常需要顯示導航資料,來指導使用者如何使用網站。ASP.NET中的導航特性允許開發人員簡單地定義導航資料,並根據這些資訊來顯示UI。
網站導覽API是一種用於訪問網站導覽資料的基於提供者(provider)的編程內容。該API把導航資料存放區在XML檔案中,並通過一組SiteMapNode類來暴露這些資料。應用程式和控制項開發人員可以構建SiteMapNode執行個體並使用這些資訊來顯示導航介面。
面嚮導航的伺服器控制項包括Menu、TreeView、SiteMapPath和SiteMapDataSource控制項。這些控制項都是建立在網站導覽類的頂端的,它們使用和顯示導航資料的時候都是不考慮資料存放區的特定細節問題的。Menu和TreeView控制項還可以使用XML檔案的資料和XMLDataSource控制項的資料。
Url映射特性允許開發人員為不同URL請求的重新對應(re-mapping)定義簡單的規則。
使用網站導覽控制項
Menu、TreeView、SiteMapPath和SiteMapDataSource控制項根據導航資料產生導航介面。導航資料可以儲存在XML檔案中,或者利用網站導覽特性的基於提供者的能力來儲存。下面的例子示範了如何組合使用網站導覽特性的不同控制項。
建立應用程式網站地圖
樣本的導航結構存放在Web.sitemap檔案中,在下面你可以看到網站地圖檔。Web.sitemap檔案包含一個頂層的元素。在元素內至少嵌套一個元素。在一個網站地圖內必須有一個頂層的。網站導覽特性需要一個根來確保沿著節點層次的訪問最終匯聚到一個已知的節點。你可以在根項目下嵌套多個元素。此外,嵌套元素的深度是沒有限制的。
一個元素通常包含Url(連結)、Title(標題)和Description(描述)屬性。Url屬性指明與應用程式中的頁面對應的路徑。它也可以包含其它應用程式中的頁面的路徑,或者指向完全不同的網站的多個URL。在下面的例子中,所有的Url屬性都使用應用程式相對文法來引用路徑。Title屬性用於顯示導航資料UI的常值內容。例如,SiteMapPath控制項把Title屬性作為控制項的超連結文本顯示。如果提供了Description屬性,伺服器控制項就把顯示為工具條提示或ALT文本。開發人員也可以給添加自訂屬性,利用SiteMapNode類的預設索引器(indexer)就可以檢索這些屬性了。你可以查閱.NET架構組件文檔找到更多的關於元素其它一些屬性的資訊。
Web.sitemap的內容
以下是引用片段:
<siteMap>
<siteMapNode title="Home" url="~/default.aspx" >
<siteMapNode title="Introduction to ASP.NET" url="~/introduction/default.aspx">
<siteMapNode title="What's New in Whidbey?" url="~/introduction/whatsnew.aspx"/>
<siteMapNode title="Sample Applications (Starter Kits)" url="~/introduction/starterkits.aspx"/>
<siteMapNode title="Introduction to Visual Web Developer" url="~/introduction/vwd.aspx"/>
</siteMapNode>
<siteMapNode title="Building A Web Application" url="~/development/default.aspx">
<siteMapNode title="Building a Simple Application" url="~/development/simple/default.aspx">
<siteMapNode title="Introduction to ASP.NET pages" url="~/development/simple/pages.aspx"/>
……
</siteMapNode>
</siteMapNode>
</siteMap>
使用網站導覽控制項
在Web頁面上提供網站導覽的最簡單辦法就是使用圖形化的網站導覽控制項(SiteMapPath、TreeView和 Menu)。
· SiteMapPath--一個breadcrumb控制項,它檢索使用者的當前頁面並顯示頁面的階層。這讓使用者可以導航回層次中其它的頁面。SiteMapPath只能與SiteMapProvider一起使用,需要設定控制項的SiteMapProvider屬性。
· TreeView--在Web頁面上提供垂直的使用者介面,它可以展開和收縮選中的節點,也可以提供檢查框功能以供使用者選擇資料項目。TreeView控制項支援宣告式的或編程設定資料元素和資料來源控制項。如果你使用SiteMapDataSource控制項,那麼資料繫結就是自動進行的。
· Menu--提供水平的或垂直的使用者介面,當使用者把滑鼠放在一項上的時候會彈出子功能表。Menu控制項支援宣告式的或編程設定資料元素或資料來源控制項。如果你使用SiteMapDataSource控制項,資料繫結就是自動進行的。
請注意,TreeView和Menu控制項都可以用於非導航的情形。
下表描述了TreeView和Menu之間的差別,以便於你能根據需要做出適當的選擇。
特性 Menu TreeView
擴充 彈出 位置擴充
根據需要下載 No Yes
檢查框 No Yes
模板 Yes No
布局 水平 & 垂直 垂直
Style選項 Yes Yes
選擇模式 靜態、 動態層次 層次或父/根/葉,或按資料項目