2008-10-03 108 views
3

我創建了一個用戶控件來處理向某些業務實體(如聯繫人和客戶)添加註釋。非常好,除了一個問題。AJAX,回發和瀏覽器刷新

我正在使用ListView控件編輯和刪除註釋和一個單獨的區域,在同一個用戶控件上添加新註釋。所有這些都包裝在UpdatePanel中。

Screenshot

這裏是我的方案......用戶添加新評論...頁面做了回發,數據保存成功,和ListView控件進行更新,以顯示新的註釋。現在,如果用戶刷新瀏覽器,它將自然回發並將添加另一個重複的記錄。

關於如何最好地防止這種情況的任何想法?

+0

您如何添加新評論?它是「添加評論」按鈕事件處理程序的一部分? – EndangeredMassa 2008-10-03 16:49:06

+0

是的......所有這些工作......但如果用戶在他們的瀏覽器上按刷新按鈕,它將添加另一個記錄。 – mattruma 2008-10-03 16:52:08

+0

這裏有一篇很好的文章[這裏](http://aspalliance.com/687_Preventing_Duplicate_Record_Insertion_on_Page_Refresh.all)。 – ballpointpeon 2008-10-03 16:54:13

回答

4

你可以嘗試使用Post/Redirect/Get模式。基本上不是讓回發發送數據,而是重定向到頁面。這樣,如果用戶刷新,他/她正在刷新GET命令而不是POST。


對不起。錯過了UpdatePanel的一塊。確保您的提交按鈕也在該UpdatePanel中。頁面刷新不會影響您的AJAX調用,但是當按鈕位於面板之外時,它將執行常規回發,因此您將再次發送添加請求。

0

我沒有使用ASP.NET幾年,但你應該換在Page.IsPostBack你「做回發」代碼:

if(IsPostBack) { 
    //do your data-saving code... 
} 

MSDN link