gpt4 book ai didi

vb.net - 提交后重定向获取 (PRG) 摘要页面

转载 作者:行者123 更新时间:2023-12-02 02:17:29 27 4
gpt4 key购买 nike

所以我阅读了这种称为 PRG 的方法,作为解决表单双重提交问题的一种方式。但是,我还没有找到向用户显示的摘要页面/成功消息的下降实现。我能想到的唯一方法是存储 session 变量,但我不希望它在多次刷新时持续存在。它应该显示一次消息/摘要,然后完成。此外,如果用户无法返回到先前提交的页面,那将是理想的。

这是我的 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)

问题是,如何在直接由提交产生的​​重定向上显示此消息,最好不要再刷新?或者只是简单地显示消息而不考虑刷新,无论是最简单且最有意义的。谢谢 ;)

最佳答案

让此类消息只显示一次的技巧是使用“闪存” session 数据的概念。

这通常的工作方式是在重定向之前在 session 中存储“消息”(或与您需要的“成功”相关的任何其他数据)。然后,在处理重定向时,确保在发送“成功页面”响应之前从 session 中删除闪存数据。

这样,如果用户尝试返回成功页面,则 Flash 数据将不会在要获取的 session 中,因此不会显示两次。为了对用户友好,您可以检查 Flash 数据是否丢失并在他们尝试在 Post-Redirect-Get 流程之外访问成功页面时显示一条错误消息。

这正是 Grails 框架(在 Groovy 世界中)所做的,并且运行良好。

关于vb.net - 提交后重定向获取 (PRG) 摘要页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com