0

実行に時間がかかるコードルーチンを起動する送信ボタンがある場合に発生する「二重送信」の問題に対する何らかの解決策を実装しようとしています。

残念ながら、かなりの数のユーザーがまだ古いインターネット ブラウザーを使用しており、一部のユーザーはスクリプトなしのアドオンを実行しています。ジャバスクリプトが使えません。

asp.netでボタンをクリックした後にボタンを無効にする方法はありますか?

4

5 に答える 5

2

ユーザーがクリックした後(ページがまだロードされている間)にボタンを無効にしたいので、クライアント側で行う必要があります。JavaScript は、これに使用できる唯一のクライアント側言語です。

そのため、ユーザーが Javascript を無効にしている場合(最近ではほとんどありません)、最終ページで「二重送信」データを処理できることを確認してください。

于 2013-01-10T15:42:03.133 に答える
1

短編小説、いや。

あなたの状況では、二重投稿を検出するためにサーバー側のコードを作成してから、重複したリクエストを破棄する必要があります。

于 2013-01-10T15:42:42.553 に答える
0

ボタンをクリックするたびにサーバーでタイマーを開始し、セッションに入れることができます。次のクリックでは、タイマーを確認して、次のユーザーのクリックを適用または拒否できます。

于 2013-01-10T15:44:57.833 に答える
0

そのため、何らかのクライアント側のスクリプトを作成せずにボタンを無効にすることは不可能です。どんな種類のクライアント側スクリプトであっても無効になると仮定すると、それは不可能な作業です。

あなたができることは、実行しようとしている操作がページの読み込みごとに 2 回以上実行されないようにすることです。

  1. ページをロードするときに隠しフィールドを作成します。そのフィールドに GUID を入力します。
  2. サーバー側のクリック ハンドラーの開始時に、Lockブロックを入力します。
  3. その GUID に基づいてセッション キーの存在を確認します。(プレフィックスを付けて、他の GUID ベースのセッション キーと衝突しないようにします。)
  4. キーが存在する場合は、lockブロックを終了して何もしないか、何らかのエラー メッセージを表示します。
  5. それらのキーが存在しない場合は、そのセッション キーに新しい値を追加し、lockブロックを終了して、操作を実行します。セッション キーに適切な有効期限を設定します。数分以上かかる必要はありません。その時点で繰り返すことが理にかなっている場合は、操作の最後に関連するセッション キーを削除することもできます。
于 2013-01-10T16:18:50.680 に答える
-2

ボタンクリックイベントでは、コードを書くだけです

{

//Some Code

button1.Enabled = false;

}
于 2013-01-10T15:46:09.210 に答える