実行に時間がかかるコードルーチンを起動する送信ボタンがある場合に発生する「二重送信」の問題に対する何らかの解決策を実装しようとしています。
残念ながら、かなりの数のユーザーがまだ古いインターネット ブラウザーを使用しており、一部のユーザーはスクリプトなしのアドオンを実行しています。ジャバスクリプトが使えません。
asp.netでボタンをクリックした後にボタンを無効にする方法はありますか?
ユーザーがクリックした後(ページがまだロードされている間)にボタンを無効にしたいので、クライアント側で行う必要があります。JavaScript は、これに使用できる唯一のクライアント側言語です。
そのため、ユーザーが Javascript を無効にしている場合(最近ではほとんどありません)、最終ページで「二重送信」データを処理できることを確認してください。
短編小説、いや。
あなたの状況では、二重投稿を検出するためにサーバー側のコードを作成してから、重複したリクエストを破棄する必要があります。
ボタンをクリックするたびにサーバーでタイマーを開始し、セッションに入れることができます。次のクリックでは、タイマーを確認して、次のユーザーのクリックを適用または拒否できます。
そのため、何らかのクライアント側のスクリプトを作成せずにボタンを無効にすることは不可能です。どんな種類のクライアント側スクリプトであっても無効になると仮定すると、それは不可能な作業です。
あなたができることは、実行しようとしている操作がページの読み込みごとに 2 回以上実行されないようにすることです。
Lock
ブロックを入力します。lock
ブロックを終了して何もしないか、何らかのエラー メッセージを表示します。lock
ブロックを終了して、操作を実行します。セッション キーに適切な有効期限を設定します。数分以上かかる必要はありません。その時点で繰り返すことが理にかなっている場合は、操作の最後に関連するセッション キーを削除することもできます。ボタンクリックイベントでは、コードを書くだけです
{
//Some Code
button1.Enabled = false;
}