2012-07-24 23 views
5

我正在研究一個ASP.NET 4.0 Web Forms項目,大約5年的休息後,我對提交行爲感到困惑。ASP.NET Web窗體是否阻止雙擊提交?

在按鈕的單擊事件中,我睡眠該線程,以便可以多次單擊「提交」按鈕。

從我所知道的,ASP.NET正在阻止多次調用click事件。這是真的?

BTW:我已經關閉了JavaScript測試。

+0

可能重複http://stackoverflow.com/questions/1498269/asp-net-雙擊問題)&[防止雙擊按鈕](http://stackoverflow.com/questions/6408710/prevent-double-clicking-on-button)和http://stackoverflow.com/questions/11342546/how-to-prevent-double-submit-with-jquery-in-asp-net-app-with-updatepanels?rq = 1 – adatapost 2012-07-24 11:13:13

+0

pro與這些答案不符的是,他們談論實施令牌以確定是否發生了雙重提交。這正是我想要做的,直到ASP.NET看起來像是阻止它。只有1個答案,http://stackoverflow.com/a/1502846/120399,這表明ASP.NET可能爲你照顧它。 – Jules 2012-07-24 11:22:14

回答

8

ASP.NET阻止click事件被稱爲不止一次。這是真的嗎?

沒有,實際上發生了什麼給你的是,你的事件是由的鎖阻塞的會議。 (What session is on asp.net,是asp.net上的一個模塊,可以爲訪問該站點的每個用戶保留數據)

因此,當您進行提交時,並且該頁面正在運行此提交,然後在發出第二個提交第一個回放,實際上第二個回合正在等待第一個完成並解鎖會話。

要進行測試並證明會話正在鎖定您的請求,請關閉會話並重試您的測試。

相對:
Web app blocked while processing another web app on sharing same session
What perfmon counters are useful for identifying ASP.NET bottlenecks?
Replacing ASP.Net's session entirely
Trying to make Web Method Asynchronous

[ASP.Net雙擊問題](的
+1

我已經執行了測試,結果如您所說 - 當會話被禁用時,我得到多個點擊事件。啓用會話後,它看起來像後來的請求被拋出,而不是排隊,如果事件被阻止。從這裏,我假設如果我有一個頁面啓用會話,我不必擔心雙重提交 - 只要我說,在響應之前禁用按鈕。它是否正確? – Jules 2012-07-26 11:35:10

+0

@Jules好,我很高興我明白了真正的問題:) – Aristos 2012-07-26 11:56:48

+0

@Jules是的會議是許多同步問題的幫助。我做了一個不鎖定任何東西的自定義會話,並鎖定了像我這樣的左邊問題。這是好的一部分,不好的部分是鎖定所有的請求,這使得請求沒有相關性來阻止另一個...至少在開始一個站點的最初幾個月使生活變得最簡單。 – Aristos 2012-07-26 11:58:21