У меня есть спокойный URL для действия по редактированию страницы.Это реализовано на контроллере как метод Edit, который принимает запросы GET, и метод Edit, который принимает запросы POST.
Это означает, что вы можете посетить URL-адрес редактирования и отобразить форму для GET или сохранитьформа для POST.
[HttpGet]
public ActionResult Edit(int id) {
...
}
[HttpPost]
public ActionResult Edit(EditModel model) {
...
}
Шаблон Post-Redirect-Get (PRG) выглядит довольно черно-белым, потому что он по существу перенаправляет каждый POST обратно в действие GET.Однако мне нужно убедиться, что это правильно.
Мой план заключается в том, что в действии POST, если модель действительна, я буду использовать шаблон Post-Redirect-Get для отправки пользователюв разумное место (возможно, действие «Индекс» или «Сведения»).
Однако, если существует проблема с проверкой модели, я все равно хочу просто отобразить представление.Я не хочу перенаправлять пользователя, потому что это означает вставку модели и ModelState во временные данные и перенаправление в действие GET, а затем добавление логики в действие GET для обработки временных данных.Я мог бы избежать всего этого, просто отображая представление.
Да, если пользователь нажмет F5, он повторно отправит форму, и ему будет представлено «предупреждение о повторной передаче», но затем на той же странице (прося их исправить ошибки валидации).Тем не менее, маловероятно, что они попадут в F5, и также нет опасности двойной отправки, так как форма просто не пройдет проверку еще раз.
Если проверка пройдена, пользователь будет перенаправлен, и онибудет защищен от двойных представлений.
Поэтому я должен внедрить дополнительный код и данные заполнения во временные данные, чтобы строго следовать шаблону PRG, или более разумно использовать шаблон PRG, когда форма действительна иданные хранятся?