Отправка дубликатов формы asp.net при перезагрузке

Как предотвратить повторное добавление формы, размещенной во второй раз из-за перезагрузки страницы в браузере, в мою базу данных с помощью C# Asp.Net.

Спасибо, Стивен

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 788
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

HTTP предоставляет механизм для предотвращения случайных повторных отправок - используйте метод POST в теге формы, а не метод GET.

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

иногда при перезагрузке в IE репосты повторяются!

Steven A. Lowe 10.12.2008 21:51

Действительно? Какая версия? Сам никогда не видел. Это не должно смеяться

brabster 10.12.2008 21:55

-1, AFAIK при использовании POST, если сервер не перенаправляет вас и вы перезагружаете, вы всегда будете получать предупреждение о повторной отправке.

orip 10.12.2008 21:58

Я думаю, можно с уверенностью предположить, что если он использует форму в asp.net, она уже использует POST (просто догадываюсь, я не отрицал ваш ответ)

Steven A. Lowe 10.12.2008 22:12
Ответ принят как подходящий

вам нужно какое-то уникальное значение, которое идентифицирует форму / страницу - возможно, сгенерированный номер в скрытом поле - и запомнить / проверить, что оно было обработано

Ах да ... Хорошая идея. Дай мне попробовать. Не стоит пытаться программировать в одно и то же время, когда рождественские концерты занимают все свободное время для репетиций.

Steven Behnke 10.12.2008 22:33

Одна вещь, которую вы можете сделать, - это после того, как ваша первая страница будет отправлена, вы можете выполнить response.redirect обратно на ту же страницу (таким образом убивая SUBMIT, если обновлено).

Обновлено: для орфографии.

Иногда я добавляю следующую строку: Response.Redirect ("ThisPage.aspx"); " до конца обработчика обратной передачи по нескольким причинам. Если вы обновляете данные, хранящиеся во внешнем источнике, и имеете сложный интерфейс (особенно тот, который использует javascript для изменения серверных элементов управления), это приводит к сбросу всех элементов управления, а при срабатывании события onload для свойства IsPostBack устанавливается значение false. Другой побочный эффект заключается в том, что нажатие F5 не отправляет команду повторно. Это может быть, а может и не быть правильным в вашей ситуации:

Попробуйте использовать идиому Опубликовать / Перенаправить / Получить: после обработки обратной передачи (в Page_Load или обработчике кликов с выделенным кодом) перенаправьте страницу обратно на себя,

Response.Redirect(Request.Url.ToString(), true);

Использовать в конце Response.Redirect ("Адрес страницы");

Другие вопросы по теме