Не разрешать повторную отправку страницы - PullRequest
2 голосов
/ 10 апреля 2011

У меня есть веб-форма ASP.NET 4.0. Есть текстовое поле, которое я хочу, чтобы пользователи отправляли и проверяли. Если это правильно, я пропускаю текстовое поле и не хочу, чтобы пользователи могли повторно отправлять эти данные. В IE8 пользователи могут нанести ответный удар (получить предупреждение о повторной отправке), и если они обновятся, он отправит данные из этого текстового поля.

Я попытался установить нулевое значение и отключить режим просмотра для текстового поля.

Как мне остановить повторную отправку?

Ответы [ 5 ]

2 голосов
/ 10 апреля 2011

Если абсолютно необходимо, чтобы заявки никогда не обрабатывались дважды, объедините все вышеперечисленное.

  1. Поместите некоторый javascript onclick на кнопку отправки, чтобы отключить или скрыть его, согласно комментарию Андре
  2. Реализация публикации / перенаправления / получения по ссылке Daz Lewis, чтобы гарантировать, что нажатие кнопки «Обновить» в браузере не приведет к повторной отправке формы
  3. Наконец, добавьте скрытое поле, переменную сеанса и т. Д. В соответствии с предложением Мэтта Грира и Элисон, так что, если что-то действительно пройдет - например, время соединения между публикацией и перенаправлением истекает, и пользователь нажимает кнопку обновления в браузере - вы не обрабатываете его дважды на своем сервере.
2 голосов
/ 10 апреля 2011

Вы можете реализовать шаблон Post Redirect Get, как подробно описано здесь Wikipedia , чтобы удалить обновление и двойной постбэк.

1 голос
/ 10 апреля 2011

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

1 голос
/ 10 апреля 2011

Вы можете отправить данные из текстового поля, используя AJAX, что лучше, поскольку у вас не будет кнопки «Назад».

Для небольших вещей (одно поле, маленькая информация) я использую это:

$.post("savedata.aspx", { name: "John", time: "2pm" } );

Взгляните на другие примеры , это может быть полезно.

Только не забывайте ссылаться на jQuery в вашем проекте.

1 голос
/ 10 апреля 2011

Не думаю, что в отношении кнопки «Назад» у вас есть какой-либо выбор, кроме как проверить значение в форме отправки снова и определить, является ли это повторно отправленной формой или нет.У вас есть еще один вариант, который после отправки перенаправляет на среднюю страницу с именем test.aspx, которая перенаправляет на страницу назначения, поэтому в этом случае кнопка возврата не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...