Как избежать событий кнопки на Обновлении страницы

У меня есть .aspx страница, что страница вставляет данные в базу данных по нажатию кнопки. Но когда я нажимаю кнопку, она идет право. Я добираюсь Успешно сообщение как "успешно вставленные данные". В этой ситуации, если я нажимаю "F5" или обновляю страницу, это запускает событие нажатия кнопки. Почему это должно быть? Как избежать этого условия?

5
задан skaffman 30 January 2010 в 10:09
поделиться

2 ответа

Когда пользователь нажимает F5 (или использует кнопку панели инструментов для обновления страницы). Это привести к новому запросу, идентично предыдущему , быть отправленным на сервер. Кнопка Event будет поднята , но у вас есть несколько способов защитить себя от вставки данных дважды.

Лучший способ, ИМХО, состоит в том, чтобы использовать Post / Redirect / Get Pattern . В вашем коде сразу после того, как данные сохраняются, выполните перенаправление на 302 на страницу подтверждения:

protected void btnSaveStuff_Click(object sender, EventArgs e)
{
    SaveStuffToDatabase();
    Response.Redirect("confirmation.aspx");
}

При использовании шаблона Post на исходную страницу не будет в конечном итоге в браузере История и освежающие страницы результатов вызовут финал , чтобы повторяться , которое должно быть безопасным.

10
ответ дан 18 December 2019 в 10:44
поделиться

Обновление повторно отправьте форму, которую вы опубликовали в прошлый раз, когда вы нажали кнопку.

Обычно, когда вы обновляете страницу, вы думаете о том, чтобы снова получить страницу, или делать HTTP Get, но поскольку последнее, что вы имели пост (при нажатии кнопки отправки), браузер снова выполнит пост попытка вызвать тот же ответ.

Я предлагаю использовать Post / Redirect / Get Pattern, как предложено Йорн Шуу-рода .

Эта статья также кажется актуальной. http://aspalliance.com/687_preventing_duplate_record_insertion_on_page_refresh

0
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: