У меня есть форма с сервером Side control, например button..and также написали событие на этом .. Теперь время выполнения после нажатия кнопки я обновил страницу, нажав F5.Page_load выполняет хорошо, но Button1_Click() событие также стрельба ... Так как я могу остановить выполнение мероприятий в этом scenario.Please предложить мнеПредотвращение обновления страницы при нажатии F5
ответ
Короткий ответ: не возможно
Longer Ответ: нет веб-сайт не может блокировать функциональность браузера поскольку это будет серьезной проблемой безопасности для браузера.
привет ... Joel..cureently, когда я сохранил запись ... я показываю сообщение sucess на той же странице. И если irefresh страница (ctrl + F5) или F5..один больше записей вставлен. поэтому, с теми же деталями, вставляются две строки. Я запретил вставлять повторяющиеся записи. –
Способ использования этого случая - отправить сообщение другому URL-адресу, обработать, а затем перенаправить на первую страницу с сообщением об успешности или ошибке в строке запроса. К сожалению, модель ASP.NET после обратной связи делает это практически невозможным. Все, что вы можете сделать, это перенаправить после успешного перехода на страницу стиля «спасибо» (которая полностью отделена от первой страницы). Таким образом, если пользователь обновит это, он не будет повторно отправлен. По сути, вы никогда не должны показывать результат в том же ответе, что и сообщение, которое инициировало действие. –
Кроме того, сделайте некоторое исследование Idempotency. Вы должны сделать свои действия идемпотентными :-) http://en.wikipedia.org/wiki/Idempotent –
Добро пожаловать в веб-разработку, нет возможности остановить страницу от обновления и повторной отправки, это полностью поведение браузера.
Однако есть работа вокруг; одна простая вещь, которую вы можете сделать, - после обработки щелчка на кнопке, вы можете перенаправить браузер назад на страницу, чтобы обновление не включало отправку вашей кнопки. Очевидно, для этого может потребоваться другая система управления государством (а не состояние представления), возможно, вы можете сохранить свое состояние в сеансе.
Вы могли бы потенциально использовать:
window.onbeforeunload = function()
{
return false;
}
Это будет отображать подсказку спрашивая пользователя, если они хотят, чтобы перемещаться в сторону и не может быть желательным. (Кроме того, я не знаю, какой объем поддержки)
На самом деле это не обновление страницы, которое вы хотите заблокировать, ее страница повторно POST
.
Как уже говорилось, это невозможно на стороне клиента, поскольку обновление будет воспроизводить то, что браузер сделал в последнем действии.
Но вы можете уловить его на стороне сервера, потому что сервер может хранить некоторую информацию для управления запросом.
Самый простой способ это поставить своего рода RequestID в скрытом поле на Page Load
, хранить его где-нибудь в Session
. И контролируйте его значение на следующем POST
, чтобы выполнить запрос, затем переопределите его, чтобы избежать повторного ответа POST
с тем же RequestID.
Может быть, есть лучший способ :)
Ваша «проблема» похоже на пользователь дважды щелкните поведение хоррор: ASP.Net double-click problem
Вы должны обновить страницу на нажатии кнопки? Не могли бы вы перемотать кнопку, чтобы сделать ajax-вызов для отправки данных? Если да, то вам не нужно беспокоиться о повторной отправке страницы при обновлении.
Плакат использует ASP.NET WebForms. В MVC, используя шаблон Post-Redirect-Get, это не будет проблемой.
Но это была решена для WebForms с 2004 года (и даже до того, что - я написал простое решение билет в 2001 году) с этой статьей: http://msdn.microsoft.com/en-us/library/ms379557.aspx
В основном автор создает уникальный билет, связанный с каждым запросом, и удаляет действительность билета при первой обратной передаче. Любые случайные (или вредоносные) последующие обратные вызовы игнорируются. Он завернут на базовой странице, поэтому его легко добавить в любое решение Webforms.
<script type="text/javascript" language="javascript">
function checkKeyCode(evt)// for F5 disable
{
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if (event.keyCode == 116)//disable F5
{
evt.keyCode = 0;
return false
}
if (event.keyCode == 123) {
evt.keyCode = 0;
return false
}
if (event.keyCode == 93) {
evt.keyCode = 0;
return false
}
if (event.altKey == true && event.keyCode == 115) //disable alt-F4
{
evt.keyCode = 0;
return false
}
//alert(event.keyCode);
}
document.onkeydown = checkKeyCode;
</script>
Опубликуйте этот скрипт на своей главной странице или где вы хотите заблокировать кнопку F5.
Единственное решение проблемы обновления F5 - Response.Redirect
. Пожалуйста, см. Мое сообщение по этой теме.
я получил некоторый код, который не позволяет вам нажать F5 и/или Ctrl + R:
<!DOCTYPE html>
<html>
<head>
<title>
Key code test!
</title>
<script type="text/javascript">
var x, ctrlKeyPressed = false;
function keyDown(e){
x = e.charCode || e.keyCode;
document.getElementById("key").innerHTML = x;
if(x == 17) {
ctrlKeyPressed = true;
}
if(ctrlKeyPressed && x == 82) {
e.preventDefault();
} else if(x == 116) {
e.preventDefault();
}
}
function keyUp(e) {
x = e.charCode || e.keyCode;
if(x == 17) {
ctrlKeyPressed = false;
}
}
window.onload = function() {
document.onkeydown = function (e) {
keyDown(e);
};
document.onkeyup = function (e) {
keyUp(e);
};
}
</script>
</head>
<body>
Press a key!
<br/>
Key code: <div style="display:inline;" id="key">Nothing</div>
</body>
</html>
- 1. предотвращение обновления при нажатии на текущую страницу
- 2. Предотвращение обновления страницы при нажатии ссылки на ссылку
- 3. Force перезагрузить браузер при нажатии F5 или кнопку обновления
- 4. предотвращение обновления страницы
- 5. Предотвращение обновления аудио-проигрывателя при изменении страницы
- 6. Окно обновления PHP? эквивалентно перезагрузке страницы F5?
- 7. Потеряйте Ajax-SliderExtender после обновления страницы (F5)
- 8. Простой способ обнаружения обновления страницы/F5
- 9. Предотвращение родительской страницы от обновления
- 10. Выход из веб-страницы при нажатии кнопки обновления
- 11. Предотвращение обновления страницы в ASP.NET
- 12. Liferay Security PermissionsURL: предотвращение обновления страницы при сохранении
- 13. Предотвращение обновления страницы при работе с MenuItemClick на сервере
- 14. Как предотвратить дублирование вставки при нажатии F5
- 15. Предотвращение повторной отправки страницы после обновления asp.net
- 16. Понимание обновления d3.js при нажатии кнопки вместо обновления страницы
- 17. Предотвращение потери данных при нажатии обновления приложения с использованием MDM
- 18. Предотвращение закрытия приложения при нажатии
- 19. Предотвращение обновления страницы после нажатия кнопки PrimeFaces
- 20. Предотвращение прокрутки веб-страницы при нажатии на ссылку
- 21. jQuery Tabs - Предотвращение привязки прокрутки страницы вверху при нажатии
- 22. CKEDITOR - Предотвращение обновления страницы при нажатии кнопки «Сохранить» на панели инструментов и вызова собственной функции
- 23. Перенаправление на страницу, на ручном обновлении страницы с помощью кнопки обновления страницы или f5
- 24. AngularJS: предотвращение обновления страницы при переходе между маршрутами
- 25. Предотвращение обновления ObservableCollection при ошибке
- 26. Разница между f5, CTRL + F5 и кнопкой или кнопкой обновления?
- 27. Предотвращение обновления страницы после мобильного сна/пробуждения
- 28. Предотвращение обновления страницы в представлении формы Wordpress
- 29. Предотвращение IE от обновления страницы - iframe _top
- 30. ASP.NET - предотвращение обновления страницы с помощью ModalPopupExtender
Я не веб-программист, но я даю ему попробовать на мозговой штурм. Разве это не история о PostBack и т. П.? Будет ли это работать, если вы проверите, является ли это PostBack и т. Д.? –