如何在带有回发的页面上持久保存本地Javascript数据,但在用户离开时将其清除?

如何在带有回发的页面上持久保存本地Javascript数据,但在用户离开时将其清除?,javascript,asp.net,session-storage,Javascript,Asp.net,Session Storage,我在一个大型ASP.NET应用程序中有一个控件。该控件使用AJAX与服务器通信,并在本地存储大量状态。使用此控件的所有页面都过度使用ASP.NET回发 我需要在回发过程中保持控件的状态,但我需要在用户导航到其他位置或执行重定向回发时清除该状态。我无法将此状态发送到服务器并回显 目前,我使用的是sessionStorage,但它不能满足用户离开页面时清除状态的要求 作为警告,我对控件的使用者没有控制权 我怎样才能做到这一点?这可能吗?我一般不建议这样做,但以下内容实际上可能是您的最佳选择,因为您在

我在一个大型ASP.NET应用程序中有一个控件。该控件使用AJAX与服务器通信,并在本地存储大量状态。使用此控件的所有页面都过度使用ASP.NET回发

我需要在回发过程中保持控件的状态,但我需要在用户导航到其他位置或执行重定向回发时清除该状态。我无法将此状态发送到服务器并回显

目前,我使用的是
sessionStorage
,但它不能满足用户离开页面时清除状态的要求

作为警告,我对控件的使用者没有控制权


我怎样才能做到这一点?这可能吗?

我一般不建议这样做,但以下内容实际上可能是您的最佳选择,因为您在标准WebForms范例的严格限制下工作

你可以,也可以


您需要将其与UpdatePanel结合使用,以便控件仍然可以像往常一样回发,并且ViewState机制保持不变,但回发将成为与服务器的异步通信。任何控件数据,无论是ViewState还是其他,都是控件/页面的本地数据,满足您在导航时清除数据的要求。

您是否尝试过ViewState??它的工作原理类似于会话变量,但ViewState变量只存在于一个页面中,当用户更改页面时,它们将被删除。请查看onbeforeunload事件(如果我不记得,则在用户离开或关闭页面之前执行bad)。因此,当该事件发生时,您可以清除本地存储的数据(会话存储或其他)。@EnriqueZavaleta:这不符合我关于无法将状态发送到服务器的要求。此状态最多可达4 MB。@ecarrizo:OnBeforeUnload在回发时发生。如何知道回发何时会导致重定向?如果可以确定导致重定向的操作,请在回发之前捕获它们,并在发送数据之前清除数据。