趙正德 莊 浩 侯曉宇
摘要:在OA系統中,每一位不同的角色都有不同的功能權限,這就需要OA系統在用戶登錄時通過用戶的身份加載不同的功能權限,形成動態的功能權限導航系統。ASPNET2.0提供一種Provider的模式,站點導航系統正是基于這種Provider模式的服務,這樣用戶就可以借助這個功能強大而又靈活的模式構建自己的站點導航系統。
關鍵詞:ASP.NET;siteMapProvider:自定義站點導航:ProviderModel
1前言
OA(Office,utomation)系統是廣大企事業單位信息化建設過程必然要經過的里程碑。在ASP.NET 2.0中有三個高度封裝的導航控件:SiteMapPath,Menu、TreeView,其中Menu和TreeView可以綁定到一個XML文件或者站點地圖(SiteeMapDataSouroe)的數據源上實現導航。然而可以發現,這樣的數據綁定實現的導航是靜態的,為實現動態的功能菜單導航系統,就需要在OA系統中為每一個不同的角色綁定一個XML功能權限的導航文件,而且每次對其功能權限的管理都必須對XML文件進行讀寫,十分不靈活。
2自定義站點導航地圖
2.1 ASP NET 2.0 ProviderModel
在ASP.NET 2.0中。大量地采用了Provider Model(圖一),所謂Provider Model就是在服務和數據源之間提供一個統一的接口,使用戶可以使用多種數據源,并且可以動態地在各個數據源之間切換的一種模式。
Provider Model極大地增加了程序的靈活性以及可擴展性。使用戶定制自己的站點導航地圖成為可能。圖二顯示了站點導航的Provider Model。
在ASP.NET中,命名空間System,Configuration,Provider中有一個名為ProvideBase的類,它是所有ProviderS的父類;其美于導航系統的子類SiteMapProvider是所有siteMap-Providers的父類。在ASP,NET中唯一發行的站點導航默認SiteMapProvider是XmlSiteMap—Provider,它能從站點地圖文件(即后綴名為sitemap的xml文件)產生站點導航樹。XmL—SiteMapProvider繼承于StaticSiteMapProvider類,StatieSiteMapProvider類實現了SiteMap-Provider類的部分方法,所以當用戶自定義站點提供程序時,一般選擇從Static-SiteMapProvider類派生。
2.2基于Provider模式實現站點提供SqISiteMapProvide
下面我們就可以根據以上的原理完成SqlSiteMapProvider類。它是基于訪問數據庫的站點導航提供程序,即站點導航的信息可以存儲在數據庫中。如SQL Sever2000,一旦導航信息發生變化,只要通過SQL語句對數據庫中表進行編輯,十分方便靈活。由于SqlSiteMapProvider繼承于StaticSiteMapProvider類,它至少實現以下三個方法:
(1)lnitialize()方法,該方法在調用基類的InitiaJize()方法后執行自己的一些初始化信息,如初始化連接字符串,設置默認的Provider等。
(2)BuildSiteMap()方法,該方法是整個SqlSlteMapProvide類的核心,它主要負責從數據庫中讀取站點導航信息,并且在內存中構建站點地圖。在該方法中,主要是建立數據庫連接,讀取節點信息并且創建SiteMapNode節點。
(3)GetRootNodeCore():返回目前由當前提供程序管理的所有節點的根節點。
3結束語
本文主要討論了在ASPNET中如何創建自定義站點地圖,在實際運用中如果站點導航信息保存在一個非XML文件中。如數據庫中,或者需要一個動態的站點導航結構,該結構如果需要在運行時構造可采用本文所述的方法。限于篇幅本文只是簡要地做了介紹,具體實現過程中,開發者可以參考MSDN技術資源庫進行開發。