我正在使用数据库动态构建页面来存储页面信息,并使用 .NET (C#) 来构建页面。该过程的一部分是根据数据库中的内容设置母版页(在代码隐藏中),据我所知,这必须在Page_PreInit
.
我的问题是如何将对象和变量从Page_PreInit
to 传递给Page_Load
.
我已经能够使其工作如下,但使用此方法时出现随机编译错误:
public partial class BuildPage : System.Web.UI.Page
{
protected static string pageData;
protected void Page_PreInit(object sender, EventArgs e)
{
--- SET pageData = DATA FROM DATABASE, AND SET MASTERPAGE ---
}
protected void Page_Load(object sender, EventArgs e)
{
--- USE pageData TO BUILD AND DISPLAY THE REST OF THE PAGE ---
}
}
由于各种原因,我没有使用 Visual Studio 来编译页面,只是让 .NET 在第一页请求时即时编译。我收到两条错误消息:
1) “CS0102:‘BuildPage’类型已经包含‘pageData’的定义”
2) “ASPNET:确保此代码文件中定义的类与'inherits' 属性相匹配,并且它扩展了正确的基类(例如Page 或UserControl)。”
奇怪的是,有时页面会在第一个 Web 请求时编译。并且,对于第一次请求时没有出现的情况,在随机数次页面刷新后,它将完美编译。在它编译之后,一切似乎都可以正常工作,直到我对后面的代码进行另一次更改并且它必须重新编译。
Page_PreInit
当使用该方法在和之间共享变量时,我似乎只会遇到那些编译错误Page_Load
。换句话说,如果我只是从数据库中请求数据两次,一次在“Page_PreInit”中,一次在“Page_Load”中,我永远不会收到这些错误。但我真的不希望数据库负载加倍。
所以我的问题实际上有两个部分,首先,这是一种可以接受的共享变量的方式,还是有更好的方式将数据从Page_PreInit
to传递Page_Load
?
其次,如果这是一种可以接受的方式,这些错误是否无关?有没有人看到类似的错误在重复的 Web 请求之后就消失了?
感谢您的任何帮助!饲料