如何在用户离开页面时将会话中的变量设置为null

时间:2012-07-26 09:30:24

标签: c# asp.net session

我想将一个变量从session设置为null

Session["my_variable"] = null;

我尝试使用OnUnload这样

protected override void OnUnload(EventArgs e)
    {
        base.OnUnload(e);

       Session["my_variable"] = null;
    }

但它不能正常工作,它在用户在页面上时设置变量,但我想将其设置为null,这是离开页面

2 个答案:

答案 0 :(得分:2)

一旦将页面提供给客户端,您的函数/事件就会被触发,因为它是服务器端事件。您可以使用Viewstate但仍然无法实现,因为导航不会向客户端发送任何事件,而客户端脚本可以提供帮助。

此功能可以通过java脚本on-unload事件实现。您必须向服务器发送请求以删除特定会话值或将其置为空(因为会话是键值对象)。
您的问题最好在Asp Forum解释

但要小心。此事件可能仅在某些浏览器导航时触发。你可能不得不做一些代码工作来实现你想要的东西。

答案 1 :(得分:1)

为什么不使用ViewState取代会话变量。

离开页面

后,

viewstate变量会自动删除

这里是如何使用它的示例

protected DataSet MyDataSet
{
    get
    {
        if(ViewState["MyDataSet"] == null)
        {
            return null;
        }
        else
        {
            return (DataSet)ViewState["MyDataSet"];
        }
    }
    set
    {
        ViewState["MyDataSet"] = value;
    }
}