2012年12月19日水曜日

ASP.NET ボタン連打による複数回PostBackを防止する

ASP.NETでボタンを連打すると、リクエストは全て処理されるが画面に返されるレスポンスは最後の一回のものになってしまう。

これではいかん、ということで連打を防止する場合以下のようにする。


<asp:Button runat="server" ID="BtnSubmit" 
  OnClientClick="this.disabled = true; this.value = 'Submitting...';" 
  UseSubmitBehavior="false" 
  OnClick="BtnSubmit_Click" 
  Text="Submit Me!" />

ポイントはOnClientClickでボタンを無効化する(ついでにボタンテキストも変えている)点と、UserSubmitBehavior="false"にしてある点。

ボタンを無効化しただけだと、ポストバックが発生しなくなってしまう(無効なボタンからポストバックは発生しない)。UserSbumitBehavior=falseは、webにおけるformアクションに頼らず、とにかくPostBackしなさいという意味になるので、これでOK(名前的に起こさなくなりそうだが・・・)。

ページが再ロードされれば無効化したのもボタンのテキストを変えたのも元に戻るので、これにて一件落着。

参考サイト
http://encosia.com/disable-a-button-control-during-postback/



0 件のコメント:

コメントを投稿