Vb.net 需要访问PreRequestHandlerExecute中Global.asax中的页面对象

Vb.net 需要访问PreRequestHandlerExecute中Global.asax中的页面对象,vb.net,Vb.net,我有一个巨大的网站(包含5000多页)。网站中有一个主题功能,用户可以为他们的个人资料选择不同的颜色。现在我想使用ASP.net主题功能,并将不同的CSS(不同颜色)放入主题文件夹和Global.asax中,我想检查用户主题并使用CSS呈现适当的链接元素。但我的问题是,我无法访问页面元素以在页面中添加链接。 这是我的密码 将页面设置为System.Web.UI.page=TryCast(System.Web.HttpContext.Current.Handler,System.Web.UI.p

我有一个巨大的网站(包含5000多页)。网站中有一个主题功能,用户可以为他们的个人资料选择不同的颜色。现在我想使用ASP.net主题功能,并将不同的CSS(不同颜色)放入主题文件夹和Global.asax中,我想检查用户主题并使用CSS呈现适当的链接元素。但我的问题是,我无法访问页面元素以在页面中添加链接。 这是我的密码


将页面设置为System.Web.UI.page=TryCast(System.Web.HttpContext.Current.Handler,System.Web.UI.page)
page.StyleSheetTheme=“黑色”

但是当我运行这段代码时,我得到了一个空引用错误

注意:我的应用程序非常庞大,所以不可能有母版页或基类并在每个页面中继承它


请建议。

该页面在PreRequestExecute中不可用。此函数在asp.net介入处理事务之前调用,asp.net负责该页面。将PreRequestExecute视为事物方案中的较早部分,比如当IIS第一次试图弄清楚如何处理它所拥有的东西时,它甚至还不是一个页面


您可能想查看一些其他可以勾结的事件,在页面加载之后会发生一些事件,这些事件可能允许您执行您建议的内容。

,而不是进入Galasal.Axax,请考虑使用母版页。一种可能是使用嵌套的母版页,其中第一个母版页设置总体布局,嵌套的母版页处理主题。(或多个嵌套母版页中的一个,所有母版页都引用同一顶级母版页)。如有必要,您可以使用页面中的PreInit事件来更改母版页,并选择与主题选择相匹配的母版

您可以通过让自己的类继承System.Web.UI.Page来集中此函数,并让自己的所有页面继承此新类。在那里处理PreInit事件。(以及其他有用的功能,如未处理异常的页面级处理、一般安全问题等

编辑以添加:@aepheus正确地指出,页面尚未在PreRequestHandlerExecute事件中实例化。因此,没有可以访问的页面类


Dim page As System.Web.UI.Page = TryCast(System.Web.HttpContext.Current.Handler,System.Web.UI.Page)
page.StyleSheetTheme = "Black"