ModalPopupExtenderがResponse.Writeすると閉じない?ASP.NET Webアプリケーション

プログラミング

ModalPopupExtender が ボタンの中で、Response.Write, Response.Flush, Response.End すると閉じないんです。

ちょっと理由を調べてみました。

スポンサーリンク
スポンサーリンク

ModalPopupExtender が Response.Write すると閉じない?

以前、調べたのですが、ModalPopupExtender は、ボタンを UpdatePanel の外に置けば閉じるようです。

UpdatePanelを使うとModalPopupExtender が閉じない (クローズしない)
この度、Ajax Control ToolkitでUpdatePanelを使うと、ボタンを押しても、ModalPop...

ところが、UpdatePanel の外に置いてあるボタンであっても、

Response.Write, Response.Flush, Response.End

を実行するとそのダイアログは閉じないようです。

本件、調べてみる限り、この動きは仕様のようです。

ここには、次のように書いてあります。

http://stackoverflow.com/questions/17951491/closing-a-modelpopup-after-sending-a-file

The problem is that Response.End(); kills all action (well, as it should), so the modal window itself doesn't close.

(Response.End()はすべてのアクションを止めます。

よってモーダルダイアログは閉じません。)

よって、ボタンを押すことで、Response.WriteしてExcel出力をするとかの処理を行っていた場合、ダイアログを閉じる処理は別のスレッドを使って行う必要があります。

Response.Writeしたというステータスを保持しておいて、

1秒おきにTimerを使って監視して、ステータスによってダイアログを閉じるのがベストではないでしょうか。

プログラミングの無料レッスン体験

約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp

<Codecampの特徴>

1 現役エンジニアによる指導

2オンラインでのマンツーマン形式の講義

3大手企業にも導入されている実践的なカリキュラム

↓無料体験レッスン実施中です。

プログラミングのオンラインスクールCodeCamp