2011-10-18 55 views
1

如果我有這樣的asp.net按鈕這在代碼背後:奇怪的行爲,按兩次

Button_Save.Attributes.Add("onclick", "this.disabled='true';" + ClientScript.GetPostBackEventReference(Button_Save_Data, null) + ";"); 

它可以正常使用IE和Chrome。但是,在Firefox中,每次用戶按下按鈕一次,我都會插入兩條數據記錄。

一段時間後,谷歌搜索,我修改了按鈕加入這樣:UseSubmitBehavior="false"

<asp:Button ID="Button_Save" Width="150px" UseSubmitBehavior="false" OnClick="Button_Save_Click" runat="server" Text="Save" /> 

然後它也可以與Firefox,只有一個數據記錄插入。但是,我必須爲我的Web應用程序上的每個按鈕添加該設置。它需要很多工作。

但是,我認爲如果在Firefox上運行asp.net應用程序時總是出現這種情況,那麼這真是一個大問題。還是我執行錯誤?

在此先感謝。

+0

+1 UseSubmitBehavior = 「假」。解決了我的問題。 :) –

回答

1

您最好將檢查添加到您的SAVE代碼以防止重複的POST。我已經使用了類似於你的代碼,並且仍然有重複的記錄,因爲有人在錯誤的時間點擊刷新按鈕。

編輯: 這是我使用的代碼。關鍵是將服務器上的值與回發中返回的值進行匹配。

在Page_Load中:

If Not IsPostBack Then 
    Session("rcdupdate") = Server.UrlEncode(System.DateTime.Now.ToString) 
End If 

在Page_Prerender

ViewState("rcdupdate") = Session("rcdupdate") 

並在另存常規

If Session("rcdupdate").ToString = ViewState("rcdupdate").ToString Then 
    ... write the data to the database ... 
    Session("rcdupdate") = Server.UrlEncode(System.DateTime.Now.ToString) 
End If 
+0

哦。謝謝@Bill。我會等你的更新 – olidev

0

您可以延長asp:button並添加您的新功能,然後罰款/取代您所有的asp:buttons。向前走,你可以在一次改變你的所有按鈕。

+0

這不是一個理想的解決方案,我認爲,因爲它是一個奇怪的問題與Firefox的 – olidev