這個最後的方法處理PreRequestHandlerExecute事件該方法中的第一行添加一個簡單的Trace語句您可以在調試時使用該語句(參見第章以了解更多細節)下一行獲得當前請求的頁面對象從而您可以與該對象進行交互
Dim p As Page = TryCast(HttpContextCurrentHandler Page)
注意這兒使用TryCast方法這個方法嘗試將當前的Hander對象強制類型轉換為Page對象類型這意味著如果請求的項是頁面強制類型轉換將成功並且P對象將包含對請求頁面的對象引用然而如果請求的項不是頁面強制類型轉換將失敗並且P對象被設置為NULL(或者VBNET術語中的無)
只要Page對象存在(並且不被設置為Nothing)然後就可以嘗試將主題應用於該頁面方法是獲得當前配置文件屬性並使用配置文件的Theme屬性
If p IsNot Nothing Then
Dim pb As ProfileCommon = DirectCast(HttpContextCurrentProfile ProfileCommon)
pTheme = pbTheme
End If
注意這種情況下的DirectCast符號如果嘗試的強制類型轉換失敗該符號將拋出異常這種情況只有在Webconfig文件中禁用配置文件時才會發生這將無疑使這個示例沒有任何意義!在這個方法的末尾將頁面的Theme屬性設置為存儲在稱為Theme的配置文件屬性中的值
最後存在一個添加到Webconfig文件的新的部分用於啟用HttpModule自身
<systemweb>
<httpModules>
<add name=Page type=WroxWebGlobalEventsThemeModule/>
</httpModules>
可以使用許多不同的模塊填滿<HttpModule>部分可能希望運行這些模塊在這個示例中只有一個模塊ThemeModule聲明的ThemeModule類添加在type屬性中和它駐留在其中的命名空間一起從而ASPNET可確切地知道您希望運行哪個ThemeModule
這些就是有關該示例的代碼的介紹這是復雜的部分代碼但它是在頁面上即時切換主題的簡潔方法並且是保持切換站點上所有頁面的方法因為模塊將針對站點上每個請求的頁面運行
ASPNET 入門教程完整版
[] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/net/201311/15604.html