ASP.NET で モーダルダイアログを使用するときの注意

親画面からモーダルダイアログを出して何かをさせて、再び親画面に処理を戻す。
で、モーダル側でもサーバーサイドコントロールを使いたい。
そんな話のときです。
まず、親画面の呼び出し処理は、window.showModalDialog を使って呼び出して、 その返値をもらって処理を続行すればよいだけです。
このあたりは、 “JavaScript モーダル“で検索すれば、良いサンプルが山ほど見つかります。
で、ここで問題にしたいのが、モーダルダイアログ側。
例えばカレンダーコントロールを配置してそのまま動かしてみると、PostBack送信の時にエラーになります。
こんな感じです。
モーダルダイアログからのポストバックでエラーとなった図
アドレスバーを見れば解るように、なぜかページ内にあるはずのJavaScriptを別画面で呼び出そうとしています。
また、ボタンを配置してみると、別の画面が開いてしまいます。
もう一度押してみると、その別画面がリロードされています。
ならば、きちんとしてあげればよいでしょう。
ここで試しに、<form>タグ内にtarget属性をつけてみました。こんな感じです。

<form id=”form1″ runat=”server” target=”_self”>

しかし、結果は変わらず。
では、<head>内に

<base target=”_self” />

と記述してみました。
すると、望むとおりの動作をしてくれました。
ご参考まで。

ASP.NET で モーダルダイアログを使用するときの注意” への2件のコメント

  1. 同様な症状で、別画面が開くのでどうしようかと思っていた矢先、この情報にて救われました。ありがとうございました。

  2. HTMLベースでは期待通りに動いていたのに、aspxにしたら動かなくなってしまい戸惑っておりました。
    情報をありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree