这个最后的方法处理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 入门教程完整版
[] [] [] [] [] []