Pytanie Opublikuj / Przekieruj / Pobierz wzór w ASP.NET MVC


Jaka jest najlepsza praktyka wdrażania wzorca Post / Redirect / Get w ASP.NET MVC? W szczególności, jaki jest najlepszy sposób, aby to zrobić, gdy chcesz przekierować z powrotem do początkowego działania / kontrolera?

Oto, jak obecnie to robię:

  1. Wyświetl formularz dla użytkownika.
    • W formularzu użyj <%= Html.Hidden("returnUrl") %>
    • W akcji użyj ViewData["returnUrl"] = Request.Url;
  2. Użytkownik przesyła formularz za pośrednictwem POST
  3. Przekieruj do returnUrl modelowanie, jeśli nie null. W przeciwnym razie przekieruj na stronę główną.

To jest zadanie, ale wydaje się, że spowoduje to wiele powielania. Zdałem sobie również sprawę, że mogę prawdopodobnie przekierować do Request.UrlReferrer...

Jak sądzisz, co jest najczystszą, najbardziej idealną metodą na osiągnięcie tego?


15
2018-01-22 22:04


pochodzenie




Odpowiedzi:


Sposób, w jaki to robisz, jest w porządku, ale wygląda na to, że możesz trochę go przesadzić. Czy Twoje działania POST przyjmują posty z więcej niż jednego formularza? Jeśli nie, po co zawracać sobie głowę ukrytym polem formularzy? Możesz uciec prostą RedirectToAction("MyAction")


12
2018-01-22 22:33



Obecnie nie odbieram postów z więcej niż jednego formularza - więc zdecydowanie widzę Twój punkt widzenia. W tym konkretnym przypadku prawdopodobnie użyję RedirectToAction. Gdybym jednak miał więcej niż jeden formularz, czy nadal sugerowałbym, że robię to za pomocą mojej obecnej metody? - Charles


Zwykle akcja obsługująca POST wie, gdzie musi przekierować po pomyślnym przesłaniu. Dlatego każda czynność, która implementuje RGP, może po prostu wywołać RedirectToAction(string).

public ViewResult Edit(string email)
{
  // save the email
  return RedirectToAction("Edit");
}

4
2018-01-23 02:19