Получение перенаправления сообщения в ASP.NET MVC и проверка с помощью Restful URL

У меня есть спокойный URL для действия по редактированию страницы. Это реализовано в контроллере как метод Edit, который принимает запросы GET, и метод Edit, который принимает запросы POST.

Это означает, что вы можете посетить URL-адрес редактирования, и он отобразит форму для GET или сохранит форму для ПОСЛЕ.

[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, когда форма действительна и данные сохраняются?

17
задан Fenton 4 April 2011 в 11:48
поделиться