我已經創建與服務器端控件像按鈕的形式..並且也有寫的事件.. 現在運行時後,點擊按鈕我刷新了按F5.Page_load頁正在執行罰款的button1_Click()事件也燒成...所以,我怎麼能停在這scenario.Please此事件執行建議我防止按F5上的頁面刷新
回答
答案很簡單:不可能
再回應:沒有網站可以阻止瀏覽器的功能因爲這對瀏覽器來說是一個嚴重的安全問題。
嗨......喬爾......當我保存一條記錄時,很安全......我在同一頁面顯示一條成功消息。如果irefresh頁(ctrl + F5)或F5..one更多的記錄正在插入。所以,插入相同的細節tworecords。我需要防止插入重複記錄。 – 2010-11-19 16:00:23
圍繞該用例的解決方法是發佈到不同的URL,進程,然後重定向回第一頁,在查詢字符串中顯示成功或錯誤消息。不幸的是,ASP.NET的post-back模型使得這幾乎不可能。您成功處理到「謝謝」樣式頁面(與第一頁完全分離)後,您所能做的就是重定向。這樣,如果用戶刷新它,它將不會重新提交。實質上,您不得以與發起該行動的帖子相同的迴應顯示結果。 – 2010-11-19 17:03:19
另外,對冪等性做一些研究。你需要使你的行爲冪等:-) http://en.wikipedia.org/wiki/Idempotent – 2010-11-19 17:04:33
歡迎來到網站開發,沒有辦法阻止網頁刷新和重新發布,這完全是瀏覽器行爲。
雖然有工作,一件簡單的事情,你可以做的是處理你的按鈕點擊後,你可以將瀏覽器回重定向到頁面,以便刷新不會包括您的按鈕重新發布。顯然這可能需要一些其他的狀態管理系統(而不是視圖狀態),也許你可以將你的狀態存儲在會話中。
您可能使用:
window.onbeforeunload = function()
{
return false;
}
這將顯示一個提示,詢問用戶是否要瀏覽路程,可能不期望。 (另外,我不知道支持的程度)
它不是真正的頁面刷新,你想阻止,其頁面重新編號爲POST
。
如前所述,在客戶端無法實現,因爲刷新會重播瀏覽器在最後一個操作中所做的操作。
但是你可以把它放在服務器端,因爲服務器可以容納一些信息來控制請求。
最簡單的方法是把一個排序在一個隱藏字段的requestId上Page Load
,一些地方保存它像Session
。並控制它的值在下一個POST
有效的請求,然後覆蓋它,以避免重新POST
與請求ID。
也許有一個更好的辦法:)
你的「問題」類似於用戶雙擊恐怖行爲:ASP.Net double-click problem
你有刷新按鈕的點擊的頁面?你可以重新連接按鈕來進行Ajax調用來提交數據嗎?如果是這樣,那麼你就不必擔心刷新頁面重新提交。
海報正在使用ASP.NET WebForms。在MVC中,使用Post-Redirect-Get模式,這不會是一個問題。
不過,這已經自2004年解決了Web表單(甚至在這之前 - 我在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. 防止按鈕serverclick在每個頁面上刷新刷新
- 2. 防止頁面刷新按鈕點擊
- 3. 防止Javascript頁面刷新
- 4. 防止HTML頁面刷新
- 5. 頁面刷新問題(F5)
- 6. 如何停止自動按鈕點擊F5和頁面刷新?
- 7. 防止ASP.NET頁面刷新(F5)時觸發上一個事件觸發器
- 8. 按PrimeFaces的按鈕後,防止頁面刷新
- 9. 防止頁面刷新阿賈克斯
- 10. 如何防止頁面刷新?
- 11. 防止對話提交刷新頁面
- 12. 防止窗體刷新頁面
- 13. 如何防止JSP頁面刷新
- 14. 如何防止頁面被刷新?
- 15. 防止後刷新頁面彈出
- 16. 防止IE刷新頁面 - iframe _top
- 17. 防止頁面加載刷新
- 18. 刷新站點頁面就像按F5或單擊刷新按鈕
- 19. 如何防止後退按鈕刷新HTTPS上的上一頁?
- 20. Delphi Chromium Embedded - 使用F5刷新頁面
- 21. 如何防止F5重新提交的PHP頁面
- 22. 防止從ASP.NET中的按鈕刷新頁面
- 23. jQuery的:防止刷新頁面按壓輸入型時=提交
- 24. 如何防止我的HTML按鈕刷新整個頁面?
- 25. 防止父頁刷新
- 26. 防止URL地址欄,並防止使用jquery刷新頁面
- 27. 如何防止頁面刷新提交按鈕點擊
- 28. 防止頁面刷新提交按鈕單擊
- 29. 如何防止頁面刷新按鈕在html5中點擊?
- 30. 防止在vb.net中點擊按鈕後刷新頁面
我沒有Web程序員,但我給它一個嘗試,以集思廣益。這不是一個關於回傳或類似的故事嗎?它會工作,如果你確認它是否是一個回發等? – 2010-11-19 15:59:16