我在本文中找到了一篇关于如何检测页面刷新的好文章:Detecting browser 'Refresh' from Code behind in C#,我尝试按照代码在vb.net编写的Web表单应用程序中使用它。
我的问题是,当我使用浏览器刷新按钮刷新页面时,布尔值IsPageRefresh始终保持为false。因此,我试图阻止在页面刷新时执行的代码不断执行。
这是一个例子,如果我的vb.net代码包含文章中的转换代码:
Dim IsPageRefresh As Boolean = False
Protected Sub Account_reset_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
ViewState("ViewStateId") = System.Guid.NewGuid().ToString()
Session("SessionId") = ViewState("ViewStateId").ToString()
Else
If ViewState("ViewStateId").ToString() <> Session("SessionId").ToString() Then
IsPageRefresh = True
End If
Session("SessionId") = System.Guid.NewGuid().ToString()
ViewState("ViewStateId") = Session("SessionId").ToString()
End If
End Sub
Protected Sub Account_reset_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete
If (Not Page.IsPostBack) Then
If Not IsPageRefresh Then
If Not String.IsNullOrEmpty(Request("key")) Then
If Not (Customer.SignInByResetKey(Request("key"))) Then
Customer.Messages.Add("Invalid password reset key", MessageType.Error)
FormsAuthentication.SignOut()
Functions.Redirect(SiteLink.ResetPassword)
Else
' Do Nothing
End If
Else
Functions.Redirect(SiteLink.ResetPassword)
End If
Else
'Do Nothing
End If
End If
End Sub
我想请求帮助,以确定我可能犯错误的地方,或者是否有更好的方法。
我看过许多文章,展示了如何在代码中捕获页面刷新,但他们使用PreRender方法,由于如何构建网站,我无法实现该解决方案。
我希望我能得到一些积极的反馈。
非常感谢。