




HTTP предоставляет механизм для предотвращения случайных повторных отправок - используйте метод POST в теге формы, а не метод GET.
Я думаю, будет справедливо сказать, что вы должен используете метод POST для запроса, который все равно обновляет ресурс, потому что он также предотвратит другое нежелательное поведение, например, создание закладок для страницы, которая обновляет ваши данные.
Действительно? Какая версия? Сам никогда не видел. Это не должно смеяться
-1, AFAIK при использовании POST, если сервер не перенаправляет вас и вы перезагружаете, вы всегда будете получать предупреждение о повторной отправке.
Я думаю, можно с уверенностью предположить, что если он использует форму в asp.net, она уже использует POST (просто догадываюсь, я не отрицал ваш ответ)
вам нужно какое-то уникальное значение, которое идентифицирует форму / страницу - возможно, сгенерированный номер в скрытом поле - и запомнить / проверить, что оно было обработано
Ах да ... Хорошая идея. Дай мне попробовать. Не стоит пытаться программировать в одно и то же время, когда рождественские концерты занимают все свободное время для репетиций.
Одна вещь, которую вы можете сделать, - это после того, как ваша первая страница будет отправлена, вы можете выполнить response.redirect обратно на ту же страницу (таким образом убивая SUBMIT, если обновлено).
Обновлено: для орфографии.
Иногда я добавляю следующую строку: Response.Redirect ("ThisPage.aspx"); " до конца обработчика обратной передачи по нескольким причинам. Если вы обновляете данные, хранящиеся во внешнем источнике, и имеете сложный интерфейс (особенно тот, который использует javascript для изменения серверных элементов управления), это приводит к сбросу всех элементов управления, а при срабатывании события onload для свойства IsPostBack устанавливается значение false. Другой побочный эффект заключается в том, что нажатие F5 не отправляет команду повторно. Это может быть, а может и не быть правильным в вашей ситуации:
Попробуйте использовать идиому Опубликовать / Перенаправить / Получить: после обработки обратной передачи (в Page_Load или обработчике кликов с выделенным кодом) перенаправьте страницу обратно на себя,
Response.Redirect(Request.Url.ToString(), true);
Использовать в конце Response.Redirect ("Адрес страницы");
иногда при перезагрузке в IE репосты повторяются!