繁体   English   中英

离开一页时如何清除会话

[英]How to clear Session when navigating away from one page

我在Google上搜索了大约1/2小时,没有点击。 场景是,动态脚本保存在字符串构建器中,其"string"表示形式存储在会话中。 恰好发生在用户从一个页面导航到另一页面时,[from session]脚本使用"RegisterStartupScript" 该脚本已在Page的PreRender事件中注册。 因此,我想在会话中清除该脚本,同时页面导航结束,但排除了创建另一个会话变量并清除上一个变量的选项。 这是一个开销:(

为什么将其存储在Session中,是否需要在GET请求之间维护此脚本?

如果仅回发是相关的,则可以将其存储在viewstate中,因为只有在进行回发时才维护此状态。

如果您也希望该字符串在GET请求中可用,则可能需要引入一个不同的变量,该变量的标识符标识为其生成脚本的页面。 如果请求的页面与控制变量不匹配,则必须生成一个新脚本。

您可以使用JavaScript onUnload()并调用AJAX服务,这将清除服务器端会话。

用户如何离开页面导航? 您不能使用ASP.NET按钮而不是超链接,然后在清除会话变量后执行代码重定向吗?

protected void btnDoSomething_Click(object sender, EventArgs e)
{
    Session["Value"] = String.Empty;
    Response.Redirect(strURL, false);
}

或者您可以在查询字符串中添加一个变量,然后在目标页面的Page_Load事件中检查它:

Webform1.aspx?reset=true

由于我还不能发表评论,请使用onUnload()。

它也会触发完整的回发。 Ajax回发不触发!

您需要做的是确保onUload函数内部只有在需要时才清除会话。 就像在回发之前将变量isPostBack设置为true一样,因此onUnload会看到该变量并发出请求以清除会话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM