我试图在从Global.asax文件自动加载的每个页面上设置一个变量。
我原以为我可以从Application_BeginRequest
做到这一点,但它似乎不起作用。
变量是从数据库中设置的,本质上我是在快速调用数据库,检查是否需要做其他事情。我现在不能详细介绍,但不能使用缓存。
所以,我尝试了很多想法,但没有取得任何进展,在我看来,有两个最合乎逻辑的想法:
1:在Application_BeginRequest
中设置变量
Public Class Global_asax
Inherits System.Web.HttpApplication
Shared Property MyVar as String
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
MyVar = CallToDatabase()
End Sub
End Class
2:在Global.asax文件的开头设置变量:
Public Class Global_asax
Inherits System.Web.HttpApplication
Shared Property MyVar as String = CallToDatabase()
End Class
在这两者中,以下是问题:
版本(1)似乎根本没有设置变量,当尝试访问时,我得到了一个空值。
版本(2)确实有效,但该值在页面加载过程中是静态的,这意味着如果我刷新或移动到另一个页面,即使我知道它应该更改,该值也会保持不变。
您可以使用继承。创建一个类(BasePage),每个页面都可以继承此基础页面。在基本页面的Page_Load(或Pre_Init)中,检查DB。这将允许您查看某些页面,但不是全部页面(如果有必要的话)。