返回“ASP.NET 2.0數據教程目錄”
ASP.NET 2.0數據教程之六十二:創建一個用戶自定義的Database-Driven Site Map Provider
導言:
ASP.NET 2.0的網站地圖(site map)功能允許頁面開發者在一些 持久介質(persistent medium),比如一個XML文件裡,自己定義一個web程序的 site map.一旦定義了之後,我們可以通過System.Web命名空間的SiteMap class 類或某個Web導航控件,比如SiteMapPath, Menu, 或TreeView來對其進行訪問。 site map系統使用的是provider model模式,所以可以創建不同的site map,並 將其應用到一個web應用程序。ASP.NET 2.0默認的site map provider,其結構為 一個XML文件。在教程《Master Pages and Site Navigation》裡我們創建了一個 Web.sitemap文件,它就包含了這種結構,並且在教程的每一個新部分裡我們都要 更新其XML.
當site map的結構是靜態的時候,默認的這種基於XML(XML- based)的site map provider工作正常,就像本系列教程一樣。但是在很多時候我 們需要動態的site map.如圖1的site map,每個種類以及屬於該種類的產品在網 站的結構裡做層次狀體系分布。在該site map裡,當訪問根目錄的web頁面時,將 列出所有的種類;再訪問某個具體的種類的根目錄時,將列出屬於該種類的所有 產品;再訪問某個具體的產品時將列出該產品的詳細信息。
圖1:Categories 和 Products構成了Site Map的層次結構
這種 基於category 和product的結構可以通過"硬編碼"的方式添加到 Web.sitemap文件.每當對category 或 product進行添加、刪除、重命名等操作時 ,都需要對該文件進行更新。很自然的,如果其結構是通過數據庫,或更理想地 ,是從業務邏輯層來獲取的,那麼對site map的維護是很簡單的。那樣的話,只 要對products 和 categories進行添加、刪除、重命名時,site map會自動的更 新以反應這些變化。
由於ASP.NET 2.0的site map是建立在provider模式 的基礎上的,因此我們可以創建一個自定義的site map provider,從數據庫或某 個層來獲取數據.在本文,我們創建的provider將從業務邏輯層獲取數據。讓我們 開始吧!
注意:本文創建的用戶定制site map provider僅僅依賴於系統 的層及其數據模式(data model)。Jeff Prosise的文章《Storing Site Maps in SQL Server》 (http://msdn.microsoft.com/msdnmag/issues/05/06/WickedCode/)
和《 The SQL Site Map Provider You’ve Been Waiting For》
(http://msdn.microsoft.com/msdnmag/issues/06/02/wickedcode/default.aspx )
考察了將site map數據存儲在SQL Server的方法。