2012-07-24 30 views
5

私は約5年間の休憩の後、ASP.NET 4.0 Webフォームプロジェクトで作業しています。私は送信動作について混乱しています。ASP.NET Webフォームはダブルクリック送信を防止しますか?

ボタンのクリックイベントでは、送信ボタンを複数回クリックできるようにスレッドをスリープ状態にします。

私が知る限り、ASP.NETはclickイベントが複数回呼び出されるのを防ぎます。これは本当ですか?

ところで、私はこのテストのためにjavascriptを無効にしました。

+0

[ASP.Netダブルクリックの問題]の可能複製(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

+0

プロそれらの回答との間違いは、二重提出が行われたかどうかを判断するトークンの実装について話していることです。これは、ASP.NETがとにかくそれを妨げているように見えるまで、私がやろうとしていたことです。 1つの答え、ASP.NETがあなたのために世話をすることを示すhttp://stackoverflow.com/a/1502846/120399があります。 – Jules

答えて

8

ASP.NETが複数回呼び出されてクリックイベントを防止している。これは本当ですか?

ませんは、実際にどのようにあなたに起こっていることはあなたのイベントがロックによってブロックされていることですセッションの。 (What session is on asp.netは、サイトを訪問する各ユーザーのデータを保持できるasp.net上のモジュールです)

したがって、送信を行い、ページがこの送信を実行してから、最初の1回の再生、実際には2回目はセッションを終了してロックを解除することを最初に待っています。

テストを行い、セッションが要求をロックしていることを証明するには、セッションをオフにしてテストを再試行します。

相対:
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

+1

私はテストを行いました。結果はあなたの言う通りです。セッションが無効になっていると、イベントに複数のヒットがあります。セッションが有効になっている場合、イベントがブロックされていると、後続の要求がスローされ、キューに入れられないように見えます。これからは、あるセッションでセッションが有効になっているとしたら、二重送信について心配する必要はありません。応答する前にボタンを無効にしている限りです。これは正しいです? – Jules

+0

@Jules良い、私は本当の問題を理解してうれしいです:) – Aristos

+0

@Julesはいセッションは、そのような多くの同期の問題のための助けです。私は何もロックされていないカスタムセッションを作ったし、私はこのような私の左の問題でロックする。これは良い部分です、悪い部分はすべての要求をロックし、これは相対性を持たないリクエストを作成して相手をブロックすることです。少なくとも、サイトを開始するときは最初の月に最も簡単になります。 – Aristos

関連する問題