2010-10-09 131 views
1

每次刷新瀏覽器時,我的按鈕的事件處理程序都會再次觸發。你如何防止這一點?如何防止頁面刷新後發生上次事件?

+0

如果您想重新提交數據,瀏覽器是否會提示您? – Marko 2010-10-09 00:35:23

+0

我有時見過,但其他時間沒有 – Prabhu 2010-10-09 00:37:16

回答

2

一種方法可能是使用HTTPModule。您可以使用Javascript生成客戶端GUID,並將其發佈回您的服務器。然後,如果用戶刷新,則比較該GUID並查看它是否已存在於您的服務器上。如果它存在,那麼它是一個刷新,你不應該執行你的按鈕事件處理程序的方法。在blog post中描述了此實現的一個示例。

另一個想法可能是在用戶按下按鈕後重定向頁面(或將其重定向到自己)。這將給一個乾淨的回發和刷新它不應該再次提交事件。

1

我總是嘗試使用PRG(Post-Redirect-Get)模式,即使它對Web Forms系統看起來有點不自然。

這基本上意味着得到一個Button_Click事件後,你做一個重定向,也許使用QueryString參數來指示結果頁面顯示什麼。

如果您沒有使用UpdatePanel進行部分頁面更新,那麼無論如何,您都不會「失去」那麼多。 (如果您使用的是partials,刷新頁面不一定會重新發布!)