我希望在页面的生命周期中发生任何其他事情之前,在Session对象(即用户ID)中存储内容。
我尝试将它放在Page的构造函数中,但是Session对象尚不可用
我尝试覆盖OnInit
,但是其他代表挂钩到Init
事件可能仍然会被执行。
我真的迷失了,尽管这听起来像是非常基本的ASP.NET理论。
答案 0 :(得分:2)
更常用的方法是封装对Session中数据的访问,并在第一次访问时按需加载。基本模式如下所示:
public string UserId
{
get
{
string s = Session["UserId"];
if (s == null)
{
s = ... Get UserID from somewhere, e.g. database
Session["UserId"] = s;
}
return s;
}
}
通过这种方式,数据将在第一次需要时加载,而您无需关心页面生命周期中的数据。
答案 1 :(得分:1)
您可以覆盖OnInit()方法,实现代码,并添加对base.OnInit()的最终调用,从而引发已注册的Init事件。