網站導覽提供者--ASP.NET2.0中的網站導覽提供者暴露了應用程式中的頁面的導航資訊,它允許你單獨地定義網站的結構,而不用考慮頁面的實際物理布局。預設的網站導覽提供者是基於XML的,但是你也可以通過編寫自訂的提供者,從任何後端位置暴露這些資訊。
網站導覽API--網站導覽API用於在應用程式的代碼中訪問網站導覽資訊,它摘錄了導航資訊儲存的細節。你可以使用API來編程訪問應用程式的瀏覽節點。
導航控制項--導航控制項為頁面之間的導航提供了通用的UI,例如樹視圖、菜單和breadcrumb("麵包屑",一種顯示當前所在頁面的控制項)。這些控制項利用ASP.NET2.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檔案包含一個頂層的<siteMap>元素。在<siteMap>元素內至少嵌套一個<siteMapNode>元素。在一個網站地圖內必須有一個頂層的<siteMapNode>。網站導覽特性需要一個根<siteMapNode>來確保沿著節點層次的訪問最終匯聚到一個已知的節點。你可以在根<siteMapNode>元素下嵌套多個<siteMapNode>元素。此外,嵌套<siteMapNode>元素的深度是沒有限制的。
一個<siteMapNode>元素通常包含Url(連結)、Title(標題)和Description(描述)屬性。Url屬性指明與應用程式中的頁面對應的路徑。它也可以包含其它應用程式中的頁面的路徑,或者指向完全不同的網站的多個URL。在下面的例子中,所有的Url屬性都使用應用程式相對文法來引用路徑。Title屬性用於顯示導航資料UI的常值內容。例如,SiteMapPath控制項把Title屬性作為控制項的超連結文本顯示。如果提供了Description屬性,伺服器控制項就把顯示為工具條提示或ALT文本。開發人員也可以給<siteMapNode>添加自訂屬性,利用SiteMapNode類的預設索引器(indexer)就可以檢索這些屬性了。你可以查閱.NET架構組件文檔找到更多的關於<siteMapNode>元素其它一些屬性的資訊。
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>