Какие методы доступны для остановки нескольких обратных передач формы в ASP.NET MVC?

Распространенная веб-проблема заключается в том, что пользователь нажимает кнопку отправки формы несколько раз, поэтому сервер обрабатывает форму более одного раза. Это также может произойти, когда пользователь нажимает кнопку «Назад», отправив форму, и она снова обрабатывается.

Каков наилучший способ предотвратить это в ASP.NET MVC?

Возможности, как я вижу это:

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

Есть ли еще?

Существуют ли какие-либо конкретные реализации любого из них?

Я вижу третий вариант, реализуемый как ActionFilter с расширением HtmlHelper, аналогично тому, как это делается для защиты от подделки.

С нетерпением жду ваших отзывов от MVC.

Ответы на вопрос(6)

Ваш ответ на вопрос