确保某些内容存储在会话中,而不是页面生命周期中的其他内容
本文关键字:周期 其他 生命 存储 确保 会话 | 更新日期: 2023-09-27 18:27:06
我想在页面生命周期中发生任何其他事情之前,在Session对象中存储一些东西(即用户ID)
我试着把它放在Page的构造函数中,但Session对象当时还不可用
我尝试覆盖OnInit
,但随后挂接到Init
事件的其他委托可能仍在之前执行。
我真的很失落,尽管这感觉像是非常基本的ASP.NET理论。
一种更常见的方法是在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;
}
}
通过这种方式,数据将在第一次需要时加载,您不需要关心它在页面生命周期中的什么时候。
您可以重写OnInit()方法,实现您的代码,并添加对base的最终调用。OnInit(),它引发已注册的Init事件。