タイトル、ながっ!
今回の開発で初めてマスターページを使っています。
なかなか使い勝手がいいなーと思いながら使ってますけど、やはり今までぶつかったことのない問題が出てきますね。汗
今回の問題は・・・
まず、マスターページにUpdatePanelを配置して、UpdatePanel内にボタン(Button1)を配置します。
そのボタンの中でスクリプトを実行させる以下の処理を記述しました。
ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('いつもはこれでOK!なのに・・・');", true);
マスターページじゃなくWebフォームの場合、これでスクリプトのalertが実行されます。
しかし、マスターページ内の処理だとスクリプトが実行されません。
もしかして、マスターページではUpdatePanelは使っちゃダメ?とか、マスターページのイベントはマスターページを使用したWebフォームのほうで実行させればいい?とか、いろいろ試しましたが、解決策がありました。
ScriptManager.RegisterStartupScript(this.Button1, typeof(Button), "alert", "alert('これだとOK!');", true);
第1引数でUpdatePanel内に設置したボタン(Button1)を指定し、第2引数では、第1引数で指定したコントロールのタイプを設定します。
いつもと変わった部分は・・・
第1引数 「this」 → 「this.Button1」
第2引数 「this.GetType()」 → 「typeof(Button)」
です。
第1引数で指定するコントロールはUpdatePanel内に設置されたコントロールであれば、なんでもOKでした。
ただ、解決はしたものの、はっきりとした原因はわかってません・・・汗汗汗
WebフォームのthisはSystem.Web.UI.Pageだけど、マスターページのthisはSystem.Web.UI.MasterPageだから、その辺が関係してるんじゃないかなぁと推測はしてますが、まだまだ調査中ということで・・・