AJAX, постбэки и обновления браузера - PullRequest
3 голосов
/ 03 октября 2008

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

Я использую элемент управления ListView для редактирования и удаления комментариев, а также отдельную область в том же пользовательском элементе управления для добавления нового комментария. Все это обернуто в UpdatePanel.

Screenshot

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

Есть идеи, как лучше всего это предотвратить?

Ответы [ 2 ]

4 голосов
/ 03 октября 2008

Вы можете попробовать использовать шаблон Post / Redirect / Get . По сути, вместо того, чтобы позволить обратной передаче отправлять данные, перенаправьте на страницу. Таким образом, если пользователь обновляется, он / она обновляет команду GET, а не POST. <ч /> Извините .. пропустил кусок UpdatePanel. Убедитесь, что ваша кнопка отправки также находится в этой UpdatePanel. Обновление страницы не повлияет на ваш вызов AJAX, но когда кнопка находится за пределами панели, она выполняет обычную обратную передачу, поэтому вы снова отправляете запрос на добавление.

0 голосов
/ 03 октября 2008

Я не использовал ASP.NET в течение нескольких лет, но вы должны добавить код «сделать это при обратной передаче» в Page.IsPostBack:

if(IsPostBack) {
    //do your data-saving code...
}

MSDN-ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...