因此,我阅读了名为PRG的方法,将其作为解决表单双重提交问题的一种方法。但是,我还没有找到显示给用户的Summary Page / Success消息的下降实现。我能想到的唯一方法就是存储会话变量,但我不希望它在多次刷新时持续存在。它应该显示一次消息/摘要,然后就可以了。此外,如果用户不能返回到以前提交的页面,这将是理想的。
以下是我的PRG代码:
Protected Sub InsertRequest() Handles wizard.FinishButtonClick
Using connection As New SqlConnection(connectionStr)
Dim insertQuery As New SqlCommand("spInsertRequest", connection)
insertQuery.CommandType = CommandType.StoredProcedure
'1 - SETUP SQL PARAMETERS (omitted for brevity)
'2 - POST (inserts record into DB)
Try
connection.Open()
insertQuery.ExecuteNonQuery()
connection.Close()
Catch ex As Exception
Logger.WriteToErrorLog(Me, ex.Source, ex.Message, ex.StackTrace)
End Try
'3 - REDIRECT (to the same page and...)
Try
Dim urlRedirect As String = If(IsNothing(Request.Url), "", IO.Path.GetFileName(Request.Url.AbsolutePath)) 'Gets the filename of the current page.
If Not String.IsNullOrEmpty(urlRedirect) Then
Session.Add("referrerPage", urlRedirect) 'Used for identifying when the page is being redirected back to itself.
PageExt.AddParam(urlRedirect, "id", recID.ToString)
Response.Redirect(urlRedirect)
End If
Catch ex As Exception
Logger.WriteToErrorLog(Me, ex.Source, ex.Message, ex.StackTrace)
End Try
End Sub
'4 - GET (Display 'Success' message/summary here)问题是,如何在重定向上显示此消息,该重定向直接由提交产生,最好不用于任何进一步的刷新?或者只是简单地显示消息,而不考虑刷新,只要是最简单和最有意义的。谢谢;)
发布于 2012-03-20 02:26:14
让这样的消息只显示一次的诀窍是使用"flash“会话数据的概念。
通常的工作方式是在重定向之前将“消息”(或与“成功”相关的任何其他数据)存储在会话中。然后,在处理重定向时,请确保在发送“成功页”响应之前从会话中删除闪存数据。
这样,如果用户试图返回到成功页面,闪存数据将不会出现在要提取的会话中,因此不会显示两次。为了对用户友好,您可以检查flash数据是否丢失,如果他们试图在Post-Redirect-Get流程之外访问成功页面,则会显示一条漂亮的错误消息。
这正是Grails框架(在Groovy世界中)所做的事情,并且它工作得非常好。
https://stackoverflow.com/questions/9775684
复制相似问题