【问题标题】:Remove content of asp.net session while navigating onto another page导航到另一个页面时删除 asp.net 会话的内容
【发布时间】:2013-09-09 09:54:07
【问题描述】:

我有一个在页面上使用的会话变量。我知道会话应该用于此目的 在网站的不同页面之间存储数据,但我有一个大数据集要存储,并且我使用的是会话而不是视图状态。

当我导航到另一个页面时,我想清空会话。

有什么办法可以做到吗?

我尝试在 PageUnload 事件上将会话变量设置为 null,但这不是我想要的。

当页面导航到另一个页面时,我想将会话变量设置为 null。

请告诉我。

【问题讨论】:

  • 在您正在导航的页面上,清除会话。
  • 有多少页面正在使用这个会话?比如,你怎么知道你不再需要会话或者他们导航到不需要它的页面?
  • 我只在这个(一个)页面上使用会话。离开此页面后,我不需要会话。

标签: c# asp.net session dataset


【解决方案1】:

你只需要打电话

Session.remove("nameOfSessionVariable") ;

以及关于如何处理“离开页面事件”

您必须编写一些前端 javascript 来执行此操作 类似于 window.onbeforeunload() 的东西。然后你必须做一个 AJAX 调用告诉你的后端这个事件正在发生。这 当然,这不是万无一失的。浏览器崩溃或强制“退出”会 不触发此事件。

可以在这里看到 C# ASP.NET Page Leaving event?

【讨论】:

    【解决方案2】:

    如果您真的想检测用户何时离开页面 - 您必须从客户端执行此操作。处理 onbeforeunload 事件并进行 AJAX 调用以清除会话变量。

    但这是矫枉过正。考虑重构代码以在会话中存储更少量的数据,并且仅在不同页面之间使用。

    【讨论】:

    • 以及如何删除会话变量内容?
    • 您将对服务器端代码进行 AJAX 调用。并在该服务器端代码中执行 Session.Remove("var");
    【解决方案3】:

    在您导航到的页面上,您可以清除会话变量,如下所示:

    Session.Remove("Name");
    

    完全放弃会话:

    Session.Abandon();
    

    【讨论】:

    • 以及如何处理“离开页面”?
    • 我有很多可以导航到的页面。我不认为在我的情况下我可以在我网站的每个页面上添加 Session.Remove。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2015-08-12
    • 1970-01-01
    相关资源
    最近更新 更多