假设在ASP.NET .aspx
页面中我有Page Load
方法和按钮点击事件的另一种方法。
在Page Load
方法中,我通过检查会话来检查用户是否已登录。无论他是否存在,我都将结果存储在全局变量中。
Boolean isGuest = false;
protected void Page_Load(object sender, EventArgs e) {
if(Session["id"]==null)
isGuest = true;
else
isGuest = false;
}
假设已经过了20分钟,我不知道Session是否已经终止,然后我点击了一个Button,事件是这样的:
protected void Button_Click(object sender, EventArgs e) {
if(isGuest==false)
//do something
else
// do another thing
}
我的问题是:当我点击按钮时,ASP.NET会再次通过Page_Load
方法(再次检查isGuest
),或者只是执行Button_Click
内的内容方法,意思是,它使用的Boolean isGuest
可能是false
,但实际上会话终止,意味着它应该是true
。
答案 0 :(得分:4)
Page_Load
在控件事件
看看:ASP.NET Page Life Cycle Overview
旁注:如果您只想在第一次加载时而不是在每次回发时都做某事,则必须检查IsPostBack
属性。
答案 1 :(得分:-3)
你可以:
UserID
和其他配置文件属性定义您自己的类; Session["NameReferingToYourClass"] = new YourClass();
mYourClass = Session["NameReferingToYourClass"]
的早期阶段将成员变量设置为会话对象; Page.Unload(..){ Session["NameReferingToYourClass"] = mYourClass
的会话中。 这样您就可以在代码中使用类属性,包括UserId
,非常类似于Windows应用程序,代码中的其他任何位置都不会提及会话。