2012-03-09 6 views
4

現在、ASP.NETで複数のフォーム送信を防止する方法を探しています(つまり、ユーザーが送信ボタンを何回かクリックするとOnClickイベントが何度も発生します) 。ASP.NETでの複数フォーム送信の防止

現在、私はこのようにそれをやっている:

protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
     Page.ClientScript.RegisterOnSubmitStatement(GetType(), "ServerForm", 
     "if (this.submitted) return false; this.submitted = true; return true;"); 
    } 

これは、同期ポストバックのための魔法のように動作します - 「submitted'-値は、各ポストバック後にリセットし、複数を提出しているからフォームを防止しますしかし、このメソッドはAsyncPostbacks、つまりUpdatePanelでは機能しないので、ボタンをクリックした後にJSを介して各ボタンを有効にしたり有効にしたりせずに、これを実現するアイデアを探しています。

おかげで、

デニス

+3

のような簡単なJavaScriptを使用してボタンを無効&上記の例のコードを変更することができますか? –

+0

私は本当に私のページには望んでいないJSの非常にたくさんのため、それは実際に実装する痛みになることができるいくつかのブラウザ(ハイIE)のために動作している、私はそのような単純なソリューションを見つけることを望んでいたこれは私がページから派生したクラスで実装することができるためです。 –

答えて

1

なぜあなたはあなたのデータベースにチェックしていませんか?ユーザーがすでに登録している場合は警告ボックスを表示します。 ます。また、これはあなたを助けるPRG pattern

Handling Form submission with PRG

0
  1. あなたは非同期リクエストをチェックするために、クラスSys.WebForms.PageRequestManagerに存在開始&終了方法を確認することができます。
  2. Sys.WebForms.PageRequestManagerあなたはなぜいないボタンを無効

    document.getElementById("YouButton.ClientID").disabled = true;

関連する問題