Это не совсем так ясно. Единственный способ, которым сервер может идентифицировать «PostBack», основан на заголовках, переданных странице по вашему запросу. Когда вы размещаете форму, «IsPostBack» является истинным, как и следовало ожидать. Когда вы обновляете страницу или нажимаете Назад, отправляются точно такие же данные запроса. Приложение не может обнаружить, что пользователь выполнил нестандартный запрос (Назад или Обновить), не изменив поведение браузера, отправляющего запрос.
Как вы знаете, большинство браузеров сообщают вам, что «Нажатие кнопки« Назад »отправит данные формы ...», но это всего лишь предупреждение, выдаваемое браузером, чтобы вы знали, что он отправит точно такой же запрос снова. Сервер не знает этого и не имеет (собственного) способа интерпретации информации.
Советы по предотвращению двойной обратной передачи
Одним из способов предотвращения публикации данных дважды является обеспечение того, чтобы каждый PostBack содержал уникальные данные, которые вы можете проверить. Процесс довольно прост.
При каждой загрузке страницы вы хотите создать уникальный идентификатор для событий PostBack этой страницы. Не имеет значения, что представляет собой уникальный идентификатор, если он не совпадает при последовательной загрузке страницы. Поместите этот уникальный идентификатор в скрытое поле на своей странице И в сеансе пользователя (или в файле cookie). Затем на каждом PostBack проверяют, что cookie в скрытом поле соответствует значению в сеансе. Если значения совпадают, PostBack - это оригинальное сообщение на странице, которое может быть обработано соответствующим образом. После выполнения необходимых операций вам нужно будет снова изменить уникальный идентификатор в обоих местах. Таким образом, если пользователь должен нанести ответный удар и выбрать «Переслать данные», скрытое поле не будет соответствовать ключу сеанса, и вы можете выбросить дубликаты данных публикации.