Обработка обновлений после отправки формы - PullRequest
2 голосов
/ 12 января 2012

Каков наилучший способ запретить повторную отправку формы при обновлении? !IsPostBack не обрабатывает обновления. Я попытался использовать переменную bool, которая устанавливает значение true при первоначальной отправке, но, похоже, она сбрасывается при каждой загрузке страницы.

Я читал немного о куки, но я не уверен, как настроить их для передачи между страницами.

Моя настройка:

  • Default.aspx (& Default.aspx.cs)
  • Results.aspx (& Results.aspx.cs)

Нужно ли устанавливать файлы cookie в файле web.config, например SessionState? Есть ли что-то лучше, чем куки?

Ответы [ 4 ]

6 голосов
/ 25 января 2012

, как я думаю, вы можете посмотреть на сообщение / перенаправление / шаблон шаблон PRG из википедии

В спецификации HTTP 1.1 введен код ответа HTTP 303 для убедитесь, что в этой ситуации браузер веб-пользователя может безопасно обновить ответ сервера, не вызывая первоначальный HTTP POST запрос на повторную отправку.

Это просто состоит в перенаправлении после успешной публикации, так что обновление пользователя приводит к идемпотентному GET, а не к POST. Он имеет дополнительное преимущество, заключающееся в том, что браузер «забывает» о POST в своей истории, что означает, что кнопка «Назад» также не будет отправлена.

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

но вы проверяете этот шаблон PRG, он может вам помочь.

Перенаправление ответа. в asp.net

2 голосов
/ 12 января 2012

Лучшая идея - присвоить форме уникальный идентификатор (поместите его в скрытую переменную формы). Когда форма отправлена, вы отслеживаете, использовался ли ID раньше. Если нет, вы разрешаете отправку продолжить, в противном случае вы отклоняете ее.

Редактировать: Мне должно быть ясно, что вам действительно нужна база данных, чтобы сделать это правильно. Вы можете попытаться что-то найти с помощью файлов cookie, но это не является доказательством того, что пользователь может отключить файлы cookie в своем браузере.

1 голос
/ 27 января 2012

Я не чувствую ничего лучше, чем ссылка ниже для этого сценария.

http://www.codeproject.com/Articles/18841/Refresh-Module

1 голос
/ 25 января 2012

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

...