我有一個asp.net控件,它似乎觸發了頁面刷新上的按鈕單擊事件處理程序。爲什麼會發生這種情況,我怎麼能避免它?在頁面刷新時觸發按鈕單擊事件處理程序
2
A
回答
1
原因是您刷新發送到服務器的最後一個信息。 __doPostback中的按鈕點擊信息。這就是爲什麼你再次看到按鍵事件。
這是一個article談論如何檢測回發刷新。
爲了您的快速參考,此信息被複制從Why in ASP.NET is a button click event executes when page is refreshed?
3
粘貼另一種方式來做到這一點,這對我的作品 -
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Session["update"] = Server.UrlEncode(System.DateTime.Now.ToString());
}
protected override void OnPreRender(EventArgs e)
{
ViewState["update"] = Session["update"];
}
protected void btnProceed_Click(object sender, EventArgs e)
{
if (Session["update"].ToString() == ViewState["update"].ToString())
DisplayInfo();
}
private void DisplayInfo()
{
// Do what ever thing you want to do
Session["update"] = Server.UrlEncode(System.DateTime.Now.ToString());
}
看到This更多細節
+1
這對我很好。只需添加base.OnPreRender(e); – scubasteve623 2015-09-09 20:47:29
0
這就是瀏覽器的工作方式。 點擊F5時,頁面刷新會導致上次調用的服務器端事件再次發生GET/POST。在這種情況下,它的按鈕點擊事件。 防止這種情況發生的一種方法是在事件邏輯之後使用Response.Redirect(「same_page」)到同一頁面。這將強制頁面重新加載,此後再進行頁面刷新不會調用按鈕單擊事件。
相關問題
- 1. 單選按鈕更改處理程序刷新頁面
- 2. 用按鈕事件處理程序刷新圖像面板
- 3. 更新按鈕觸發編輯事件處理程序
- 4. 事件處理程序事件處理程序不調用上單擊按鈕
- 5. 停止刷新頁面按鈕單擊
- 6. 按鈕點擊事件觸發錯誤的事件處理程序
- 7. 頁面重新加載按鈕點擊事件觸發
- 8. 單選按鈕單擊觸發事件
- 9. 單擊事件處理程序觸發就緒,但不點擊
- 10. 在提交按鈕觸發某些處理後在父頁面上刷新div
- 11. 如何在頁面刷新後觸發點擊事件?
- 12. 如何停止按鈕點擊頁面刷新,但我的按鈕點擊事件應該觸發
- 13. 單選按鈕事件處理程序
- 14. 提交表單時觸發點擊事件按鈕被觸發
- 15. jqGrid resize事件和刷新頁面時觸發的事件
- 16. 按鈕單擊事件後觸發Response.Redirect
- 17. 如何避免在asp.net中發生頁面刷新時觸發按鈕點擊事件?
- 18. 單擊事件處理程序與自定義控件按鈕
- 19. 按鈕事件處理程序沒有在主頁上觸發沒有/default.aspx
- 20. 如何從包含頁面(可視頁面)觸發按鈕單擊事件
- 21. 從母版頁按鈕調用內容頁面事件處理程序點擊
- 22. ASP.NET事件處理程序的圖像按鈕沒有觸發
- 23. 第二個事件處理程序不會從按鈕觸發
- 24. 從按鈕href觸發事件處理程序
- 25. 刪除按鈕後事件處理程序不會觸發C#
- 26. 在點擊網頁刷新時,Button1_Click事件再次被觸發
- 27. ASHX通用處理程序在刷新頁面之前不會觸及(使用F5或刷新按鈕)
- 28. 點擊按鈕時未觸發事件
- 29. 當在子頁面點擊按鈕時刷新父頁面
- 30. 單擊事件處理程序,附jQuery,不會觸發
您的意思是說,您有一個帶有ASP:Button的頁面,並且您已經點擊了該按鈕一次以便頁面回傳。然後在每次點擊F5或刷新後發回「點擊」事件? – 2012-03-04 15:27:38
不確定回發位,該按鈕只是執行一些邏輯,然後寫入響應流。但代碼完成後,如果我在瀏覽器中手動刷新頁面。 – dotnetdev 2012-03-04 15:29:08