這裏很簡單...是否有一種乾淨的方式來阻止用戶雙擊Web窗體中的按鈕,從而導致重複事件觸發?防止ASP.Net(C#)中的重複回發
如果我有一個評論表單,例如用戶鍵入「這是我的評論」,點擊提交,評論如下所示...但是,如果他們雙擊,三擊或只是堅持鍵盤他們可以導致多個版本被張貼。
客戶端,我可以很容易的onclick禁用按鈕 - 但我更喜歡的服務器端解決方案,這樣的事情:)
有每個視圖狀態回傳超時可以例如設置?
由於
這裏很簡單...是否有一種乾淨的方式來阻止用戶雙擊Web窗體中的按鈕,從而導致重複事件觸發?防止ASP.Net(C#)中的重複回發
如果我有一個評論表單,例如用戶鍵入「這是我的評論」,點擊提交,評論如下所示...但是,如果他們雙擊,三擊或只是堅持鍵盤他們可以導致多個版本被張貼。
客戶端,我可以很容易的onclick禁用按鈕 - 但我更喜歡的服務器端解決方案,這樣的事情:)
有每個視圖狀態回傳超時可以例如設置?
由於
我不認爲你應該加載服務器,爲這些瑣碎的任務。你可以嘗試一些像jQuery UI鎖解決方案,如this之一。微軟的Ajax工具包也應該有一些相同的控制。我很久以前就用過它,但似乎無法回想起控制名稱。
設置當用戶進入會議等[「FormXYZSubmitted」] =假頁面一個會話變量。 當提交表格時,請檢查變量類似於
if((bool) Session["FormXYZSubmitted"] == false) {
// save to db
Session["FormXYZSubmitted"] = true;
}
你可以做到這一點按鈕點擊事件,以及準確地說, – 2010-08-27 10:37:36
我沒有包括這個,但它是正確的。 – Zafer 2010-08-27 10:44:28
我有過相同的情況。我的一位同事的解決方案是在Javascript中實現一種計時器,以避免將第二次點擊看作點擊。
希望幫助,
使用jQuery你可以使用one事件。
另一個有趣的閱讀是:Build Your ASP.NET Pages on a Richer Bedrock。
禁用單擊按鈕,利用jquery或microsoft ajax工具包。
根據這是多麼重要你的,可以創建一個時間GUID的數組,你從數組中刪除,一旦更新已被處理(即調回在ViewState中/隱藏字段)
如果GUID不在回發數組中,請求無效。
在集羣環境中用數組替換數據庫表。
如果您使用Asp.Net驗證,客戶端可能會很棘手。
如果你有一個母版頁,把這個母版頁:
void IterateThroughControls(Control parent)
{
foreach (Control SelectedButton in parent.Controls)
{
if (SelectedButton is Button)
{
((Button)SelectedButton).Attributes.Add("onclick", " this.disabled = true; " + Page.ClientScript.GetPostBackEventReference(((Button)SelectedButton), null) + ";");
}
if (SelectedButton.Controls.Count > 0)
{
IterateThroughControls(SelectedButton);
}
}
}
然後將其添加到母版頁的Page_Load:
IterateThroughControls(this);
公平點,客戶端! – isNaN1247 2010-08-27 10:43:42
鏈接似乎已經死亡。 – 2013-10-24 11:10:58