站點導航提供者——ASP.NET 2.0 站點導航提供者暴露應用程式中頁面導航資訊,允許單獨定義站點結構,而不考慮頁面實際物理佈局。預設站點導航提供者基於 XML,但也可透過撰寫自訂提供者從任何後端位置暴露此資訊。
站點導航 API——站點導航 API 用於應用程式程式碼中存取站點導航資訊,它摘錄導航資訊儲存細節。可使用 API 程式化存取應用程式導航節點。
導航控制項——導航控制項為頁面間導航提供通用 UI,如樹狀檢視、選單和 breadcrumb(「麵包屑」,顯示目前所在頁面控制項)。這些控制項利用 ASP.NET 2.0 站點導航服務檢索你給站點定義結構。SiteMapDataSource 控制項還允許將其他 UI 控制項繫結到站點導航資料。
網站常需顯示導航資料指導用戶如何使用站點。ASP.NET 導航特性允許開發者簡單定義導航資料,並根據此資訊顯示 UI。
站點導航 API 是基於提供者的程式化內容,用於存取站點導航資料。該 API 將導航資料儲存在 XML 檔案中,並透過一組 SiteMapNode 類別暴露此資料。應用程式與控制項開發者可建構 SiteMapNode 實例並使用此資訊顯示導航介面。
面向導航的伺服器控制項包含 Menu、TreeView、SiteMapPath 和 SiteMapDataSource 控制項。這些控制項建立在站點導航類別頂端,使用與顯示導航資料時都不考慮資料儲存特定細節。Menu 和 TreeView 控制項還可使用 XML 檔案資料與 XMLDataSource 控制項資料。
URL 對應特性允許開發者為不同 URL 請求重新對應定義簡單規則。
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 類別預設索引子可檢索這些屬性。可查閱 .NET Framework 文件找到更多 <siteMapNode> 其他屬性資訊。
以下是引用片段:
<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>