佐々木屋

技術的なことから趣味まで色々書きます

Sys.Extended.UI.ModalPopupBehaviorがnullになる件

ASP.NET Ajaxネタですが、ネットで同じように困った方が見つからず、海外サイトでようやく回避策を見つけたので備忘として載せておきます。


というか、これだけ日本語のサイトが出てこないと、正直私が何か間違っているのか???と不安になります・・・。

もし誰か、何かお気づきあれば、教えて下さい・・・。


マスターページにToolkitScriptManagerを配置したコンテンツページ上でModalPopupExtenderを配置したサイトです。

ModalPopupExtenderのプロパティは以下のように設定しています。

asp:ModalPopupExtender

プロパティ
ID MordalCalendar
Drag True
Enabled True
TargetControlID btnCalendar
PopupControlID pnlCalendar1
PopupDragHandleControlID pnlCalendar2
BehaviorID MordalCalendar
パネルは単純に重ねて、ボタンクリックでカレンダーが表示されるようなHTMLです。

<asp:Panel ID="pnlCalendar1" runat="server">
    <asp:Panel ID="pnlCalendar2" runat="server">
        <iframe id="iCalendar" runat="server" class="iCalendar"></iframe>
    </asp:Panel>
</asp:Panel>



で、実行すると、以下のエラーが表示されて正しく画面が表示されません(ajaxがおかしくなる)。

AjaxControlToolkit.ModalPopupExtender missing required PopupControlID property value
sys.extended.ui.modalpopupbehavior undefined

つまり、Sys.Extended.UI.ModalPopupBehaviorがnullになっているわけです。
なぜそのような状況になるのかは今をもって不明ですが、以下で回避することができます。

ToolkitScriptManagerコントロールのCombineScriptsプロパティを「True」から「False」へ変更する

CombineScriptsプロパティはAjaxに関わる重複するJavaScriptファイルをダウンロードしない機能ですが、それが有効になっているとJavaScriptをまとめることが出来るので、通信の効率化になるようです。ただ、作成しているWEBアプリケーションではほとんど影響ないようでしたので、今回はこれを無効化することで回避しました。