我有三个会话,我正在设置从我的主页导航到另一个页面,如下所示:
Session["LocationText"] = locText;
Session["SpecialtyText"] = speText;
Session["GenderText"] = genText;
Response.Redirect("anotherpage.aspx", false);
一旦我进入anotherpage.aspx
,我离开页面或关闭浏览器,我想销毁这些变量。整个想法是,如果我回到anotherpage.aspx
并且没有通过点击按钮从页面重定向,它将没有任何会话。
我尝试了以下内容:
protected void Page_Unload(object sender, EventArgs e) {
Session.Remove("LocationText");
Session.Remove("SpecialtyText");
Session.Remove("GenderText");
}
当我离开页面然后回到它时,它并没有破坏变量。我怎样才能实现我的目标?
更新:
主页:
Context.Items["LocationText"] = locText;
Context.Items["SpecialtyText"] = speText;
Context.Items["GenderText"] = genText;
anotherpage:
if (Context.Items["LocationText"] != null && Context.Items["SpecialtyText"] != null && Context.Items["GenderText"] != null) {
slcLocation.SelectedValue = Context.Items["LocationText"].ToString();
slcSpecialty.SelectedValue = Context.Items["SpecialtyText"].ToString();
slcGender.SelectedValue = Context.Items["GenderText"].ToString();
this.onBtnClick();
}
答案 0 :(得分:1)
根据您的问题和评论,听起来Context
可能比Session
更合适。 Context
中的变量仅适用于当前请求的生命周期。
答案 1 :(得分:1)
为什么不在Session.Abandon()
事件中使用Page_Unload
。您可以再次开始新会话。