Обновления AJAX, обратной передачи и браузера

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

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

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

Любые идеи о том, как лучше всего предотвратить это?

2 ответа

Вы можете попробовать использовать шаблон Post/Redirect/Get. В принципе, вместо того, чтобы позволить postback отправлять данные, перенаправляйте на страницу. Таким образом, если пользователь обновляется, он/она обновляет команду GET, а не POST.

Извините.. пропустил часть UpdatePanel. Убедитесь, что кнопка отправки также находится в пределах этой UpdatePanel. Обновление страницы не повлияет на ваш вызов AJAX, но когда кнопка находится за пределами панели, она выполняет регулярную обратную передачу, поэтому вы снова отправляете запрос на добавление.


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

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

Ссылка MSDN

licensed under cc by-sa 3.0 with attribution.