台灣最大程式設計社群網站
線上人數
2092
 
會員總數:245250
討論主題:189111
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 應用 StaticSiteMapProvider與SQL Server 資料庫製作網站地圖
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
應用 StaticSiteMapProvider與SQL Server 資料庫製作網站地圖
價值 : 0 QP  點閱數:815 回應數:0

樓主

Jameswu
中級專家
4615 8
3117 490
發送站內信

捐贈 VP 給 Jameswu
原始來源: http://blog.xuite.net/jameswu/net/12465240
筆者因為工作需要將已建立於SQL Server上具有類似SiteMap資料表資料以Tree的方式呈現,而必須客製化SiteMapProvider來當作SiteMapDataSoucre的來源提供者,筆者進一步的研究SiteMapProvider類別後發現,可以直接實作StaticSiteMapProvide即可,因為他是繼承了SiteMapProvider類別且已經實作大部分的Method,我們也可以節省不少開發的時間。

後來在MSDN 發現了一篇文章Site Map Providers該作者實作了一個SQLSiteMapProvider也有詳細的安裝步驟正好可以拿來使用,不過經過筆者測試後發現SiteMapProvider本身會有Cache功能真是個不錯的元件,因為原本還擔心使用者端在瀏覽網頁時,ASP.NET網頁會不斷的讀取資料庫產生SiteMap結構,但現在根本不需要去煩惱這些了,但是問題又來了,使用類似讀取SQL Server來客製化SiteMapProvider時,並不像XmlSiteMapProvider能夠在對應的資料有更新時自動重新產生一份新的SiteMap資料來源,於是又開始煩惱了。

再仔細的閱讀Site Map Providers文章一次後發現筆者也提到若要達到類似的功能必須依賴ASP.NET 2.0的SqlCacheDependency類別,於是又開始了研究之路,當然MSDN是個寶庫筆者恰好是個採礦工,又被我發現了寶藏,The SQL Site Map Provider You've Been Waiting For此作者加強了SQLSiteMapProvider加入了SqlCacheDependency功能,真是讓我驚喜萬分,因為省去了我不少研究及實作的時間。

但是這離我的目標還差一步,因為我同一個頁面可能會有多個不同SiteMap且來源提供者都不同,但是上述兩篇文章內的範例均只能實作一個固定的SiteMapProvider(讀取資表的Store Procedure被寫成固定),因此筆者回想了SiteMapDateSource通常我們都使用預設(defaultProvider)的SiteMapProvider而忽略了可以自行設定其屬性值,筆者利用了這一點的特性將範例程式做了些許的修改,讓我們能夠將由設定Web.config組態即可讓ASP.NET自動切換來源提供者,另外因為儲存SiteMap對應的資料表僅能依照Node ID來做排序,但有時我們必須能夠去改變真正要顯示的順序,因此,筆者額外加了一個排序功能OrderID欄位來達到我需要的目標。你參考上述兩篇文章的步驟來進行實作及安裝,關於筆者自行可製化的部分,可能需要參考本文章才能讓你的網頁執行正常。


範例檔案下載 : SQLSiteMapProvider (實作 StaticSiteMapProvider)


搜尋相關Tags的文章: [ StaticSiteMapProvide ] , [ SQLSiteMapProvider ] ,
本篇文章發表於2007-07-13 09:48
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.