Итак, я прочитал этот метод под названием PRG как способ обращения к проблеме с двойной отправкой формы. Тем не менее, мне еще предстоит найти представление о спусках страницы «Сводная страница/успешное сообщение», отображаемой пользователю. Единственный способ, которым я могу думать, это хранить переменную сеанса, но я не хочу, чтобы она сохранялась при нескольких обновлениях. Он должен показывать сообщение/резюме один раз и выполняться. Кроме того, было бы идеально, если бы пользователь не смог вернуться к ранее представленной странице.Сводная страница после перенаправления-получения (PRG) при отправке
Вот мой 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)
Вопрос в том, как отобразить это сообщение на редирект, который непосредственно является результатом передачи запроса, и желательно не для каких-либо дальнейших освежает? Или просто просто отобразите сообщение независимо от обновлений, что бы ни было проще и имеет наибольший смысл. Спасибо;)
Ok groovy! : P Это предотвращает переход пользователя обратно в исходную форму запроса или это невозможно или нецелесообразно? – Chiramisu
На самом деле не существует способа предотвратить переход пользователей обратно, поскольку кэширование может позволить им туда добраться. Если вам действительно нужно, есть некоторые вещи, которые вы можете сделать, чтобы они не возвращались к исходной форме, но я бы спросил, что в качестве другого вопроса о переполнении стека ;-) – cdeszaq
Фантастический! Очень полезный ответ, спасибо. :) – Chiramisu