我用大约半小时的时间用谷歌搜索没有命中。场景是,动态脚本保存在其"string"
表示存储在会话中的字符串构建器中。只是当用户从一个页面导航到另一个页面时,脚本[来自会话]使用"RegisterStartupScript"
进行注册。该脚本在Page的PreRender事件中注册。所以我想在会话中清除这个脚本,而页面导航时btw排除了创建另一个会话变量并清除前一个变量的选项。这是一个开销:(
答案 0 :(得分:1)
为什么要在Session中存储它,你需要在GET请求之间维护这个脚本吗?
如果只有回发相关,您可以将其存储在viewstate中,因为只有在进行回发时才会保留它。
如果您希望此字符串在GET请求中也可用,您可能需要引入一个不同的变量,该变量具有标识生成脚本的页面的标识符。如果请求的页面与控制变量不匹配,则必须生成新脚本。
答案 1 :(得分:0)
您可以使用JavaScript onUnload()
并调用AJAX服务,这将清除服务器端会话。
答案 2 :(得分:0)
用户如何离开页面?您是否可以使用ASP.NET按钮而不是超链接,然后在清除会话变量后在代码中执行重定向?
protected void btnDoSomething_Click(object sender, EventArgs e)
{
Session["Value"] = String.Empty;
Response.Redirect(strURL, false);
}
或者您可以在查询字符串中添加一个变量,并在目标页面的Page_Load事件中进行检查:
Webform1.aspx?reset=true
答案 3 :(得分:0)
由于我无法发表评论,请使用onUnload()。
它也会在完整的回发中爆发。 Ajax回发不要开火!
您需要做的是,在onUload函数中保证您只需要清除会话。就像在回发之前将变量isPostBack设置为true一样,onUnload看到变量并且doenst发送请求以清除会话。