0

我想将会话中的一个变量设置为空

Session["my_variable"] = null;

我尝试过这样的 OnUnload

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

       Session["my_variable"] = null;
    }

但它不能正常工作,它会在用户在页面上时设置变量,但我想将其设置为 null whet is leave page

4

2 回答 2

2

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

此功能可以通过 java 脚本 on-unload 事件来实现。您必须向服务器发送请求以在特定会话值中删除或放置 null (因为会话是键值对象)。
您的问题在Asp 论坛上得到了最好的解释

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

于 2012-07-26T10:03:36.340 回答
1

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

离开页面后,viewstate 变量会自动被删除

这是如何使用它的示例

protected DataSet MyDataSet
{
    get
    {
        if(ViewState["MyDataSet"] == null)
        {
            return null;
        }
        else
        {
            return (DataSet)ViewState["MyDataSet"];
        }
    }
    set
    {
        ViewState["MyDataSet"] = value;
    }
}
于 2012-07-26T09:34:35.690 回答