Как управлять действием нажатия на предыдущую страницу в браузере

#.net #asp.net-mvc #browser

#.net #asp.net-mvc #браузер

Вопрос:

После тестирования моего приложения я заполнил форму с некоторым значением, сохранил, затем захотел добавить другого пользователя в список. но на половине формы я передумал и нажимаю кнопку возврата в браузере, но затем происходит что-то странное. данные из предыдущей формы загружаются вместо возврата на предыдущую страницу (должен быть список пользователей).

Как вы предотвращаете это?

   Function AddPersoon(subdienstid As Integer) As ActionResult
        Dim viewModel As New PersoonViewModel
        ViewData("Persoon.rijbewijsId") = ConvertToSelectlistItemList(_iSubDienstService.GetAllRijbewijzen(), 1)
        ViewData("Persoon.PersoonStatusId") = ConvertToSelectlistItemList(_iSubDienstService.GetAllPersoonStatussen(), 1)
        Return View(viewModel)
    End Function

    <HttpPost()> _
    Function AddPersoon(subdienstid As Integer, model As PersoonViewModel) As ActionResult
        If ModelState.IsValid Then
            Try
                _iSubDienstService.AddPersoonTo(subdienstid, model)
                Return RedirectToAction("Details", New With {.id = subdienstid})
            Catch ex As Exception

            End Try
        End If
        ViewData("Persoon.rijbewijsId") = ConvertToSelectlistItemList(_iSubDienstService.GetAllRijbewijzen(), model.Persoon.RijbewijsId)
        ViewData("Persoon.PersoonStatusId") = ConvertToSelectlistItemList(_iSubDienstService.GetAllPersoonStatussen(), model.Persoon.PersoonStatusId)
        Return View(model)
    End Function
  

Ответ №1:

Как управлять действием нажатия на предыдущую страницу в браузере

Это чистый javascript, поскольку существует метод, который вы можете подключить, вызываемый onBeforeUnload , который срабатывает, когда пользователь закрывает или переходит на другую страницу в истории браузера.

Я бы рекомендовал вам добавить скрипт, подобный (и предполагающий, что вы используете jQuery):

 var msg = "You're about to leave this page, all changes will not been save.n"  
          "Are you sure you want to leave?";

$(window).bind("beforeunload", function () {
    if( confirm(msg) ) 
        return true;
    return false;
});
  

Живой пример.

Надеюсь, это поможет.