ASP.NET AJAX Control Toolkitをユーザコントロール内に含めてみる。
UpdatePanel+ModalPopupExtender+Panel+ボタンのコントロールどもを使ったユーザコントロールを作ってみました。ユーザコントロールの編集は何の問題もなく進みます。問題はそれをWebフォームで利用する際に起こりました。ちなみにユーザコントロールをWebフォームに追加するのって、ソリューションエクスプローラのユーザコントロールファイル(.ascx)をD&Dでできるんですねぇ。タグのプレフィックスを勝手に登録してくれます。
Webフォームをデザインモードにするとコントロールの描画エラーとなります。
ハンドルされない例外が発生しました。
The control with ID
'ModalPopupExtender1' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.
むむぅ。「ScriptManagerがないですことよ。おほほほほ」だそうです。予想としてはユーザコントロールのデザインを表示する際にRendar処理が内部でこっそりと実行されているはずなのですが、その際に処理がユーザコントロールで完結しているから親WebフォームにあるScriptManagerを見つけることができていないんですね。エラー表示のあるままWebフォームを実行するとユーザコントロールは親のScriptManagerを見つけて正常に動作しやがります。カッ
じゃあユーザコントロール側にもScriptManagerを置いたらどうよ?と実際に配置してみてもデザインモードでのエラー表示はそのままに、今度は実行時にエラーがでます。しかもユーザコントロールのScriptManagerも見つけてくれてないorz
Only one instance of a ScriptManager can be added to the page.
ScriptManagerは1つかもっちゃだめですよね。
そんなわけでせっかくユーザコントロールもデザインモード時に描画されるようになりましたが、Ajaxコントロールを内部に含めると駄目なことがわかりました。悲しい。
投稿日時 : 2007年1月20日 14:17