Asp.net дублирует форму представления при перезагрузке

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

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

10.12.2008 18:42:31
6 ОТВЕТОВ
РЕШЕНИЕ

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

3
10.12.2008 18:51:20
Ах да ... Хорошая идея. Позволь мне попробовать. Не стоит пытаться программировать, в то время как рождественские концерты занимают все свободное время для репетиций.
Steven Behnke 10.12.2008 19:33:49

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

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

-1
10.12.2008 18:58:12
иногда, когда вы перезагружаете в IE, он пересылает
Steven A. Lowe 10.12.2008 18:51:48
В самом деле? Какая версия? Никогда не видел это сам. Это не должно быть LOL
brabster 10.12.2008 18:55:40
-1, AFAIK при использовании POST, если сервер не перенаправляет вас и вы перезагружаетесь, вы всегда будете получать предупреждение о повторной отправке.
orip 10.12.2008 18:58:42
я думаю, можно с уверенностью предположить, что если он использует форму в asp.net, он уже использует POST (просто угадаю, я не понизил ваш ответ)
Steven A. Lowe 10.12.2008 19:12:04

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

РЕДАКТИРОВАТЬ: для правописания.

5
10.12.2008 18:58:50

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

3
10.12.2008 18:52:05

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

Response.Redirect(Request.Url.ToString(), true);
2
10.12.2008 18:55:47

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

0
16.02.2009 11:25:41