読者です 読者をやめる 読者になる 読者になる

きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

ConfirmButtonExtenderはやはり今、まともに動かないらしい。

ASP.NET AJAX

昨日の件について調べていると、CodePlexの該当のIsuue Trackerでも言及されているポストがあることを発見。

Description:<...snip...>
Previously (and as intended), loading the page and clicking the Postback button would display the validation failures. In the 10920 release of the Toolkit, it displays the ConfirmButton prompt and then performs a postback if OK is clicked. <...snip...>

Comments:
ConfirmOnFormSubmit in 11119 release appears to bypass client validation altogether, and acts the same whether set to true or false. <...snip...>

ConfirmButton interaction with Validators somewhat broken in 10920 release

ということで、昨日実験した通りの動きになっているので間違いない模様。
ついでに、その10920の前のリリース10606を使って昨日と同じコードを実行した結果、@ITの記事どおりの動作を行うことを確認。


つまり、昨日の推測その3が正解だったようです。


というわけで、少なくとも現行のリリース11119ではConfirmButtonを検証コントロールと組み合わせて使う場合、LinkButton以外のボタンとはうまくいかない、ということでFA。
なんらかValidatorと組み合さないと旨味半減*1だし、この手のを事するときにValidatorを使えるなら普通は使うと思うので、実質的には現在はちょっと使う場面が限られるなぁ、という予感。


つかこれ、迂闊にバージョンアップすると危険なのでは…。(Javascriptが有効である事を前提に、サーバサイドのイベントハンドラでIsValidのチェックを行っていない実装だったら、直撃くらいますね*2。)


LinkButtonでは以前と同じ挙動をする点を考えても、修正してほしいところではあります。使うかどうかは別として。

*1:[http://www.atmarkit.co.jp/fdotnet/dotnettips/641aspajaxconfirmbtn/aspajaxconfirmbtn.html:title=@ITの記事]にも有るとおり、こいつの真価の半分は検証にパスした時にのみConfirmを表示することにあるのは間違いないと思います。

*2:まあ、そういう実装自体に問題はありそうですが、ただ、これって中々テストがやり辛いので、オミットしてるとか見落としてるとか普通にありそう。僕もしていないのが多い。