VS 2008のネストされたマスターページにJavaScriptへの相対参照を含める好ましい方法
-
06-07-2019 - |
質問
当社のベースマスターページには次のようなものがあります
<head runat="server">
<title></title>
<script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/actions.js")%>"></script>
<script type="text/javascript" src="<%= Page.ResolveClientURL("~/javascript/jquery/jquery-1.2.6.min.js")%>"></script>
<asp:contentplaceholder id="cph_htmlhead" runat="server">
</asp:contentplaceholder>
</head>
このマスターページがASPXページのマスターページである場合、問題なく動作します。
このマスターページが子マスターページのマスターページであり、新しいASPXページが子ページをMasterPageとして使用する場合:
''アプリケーションのサーバーエラー。
コントロールにコードブロック(<!> lt;%...%<!> gt;)が含まれているため、Controlsコレクションを変更できません。
チルダ(〜)スタイルの相対パスを保持するベースマスターページにグローバルリソース(Javascript / CSS)を含めるための好ましい方法は何ですか?
解決
ScriptManagerサーバーコントロールを使用します。
<asp:ScriptManager ID="myScriptManager" runat="server">
<Scripts>
<asp:ScriptReference Path = "~/javascript/actions.js" />
<asp:ScriptReference Path = "~/javascript/jquery/jquery-1.2.6.min.js" />
</Scripts>
</asp:ScriptManager>
他のヒント
試してみました:
<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script>
ScottGu 、
利用する1つのヒントは、ヘッドrunat = <!> quot; server <!> quot;によって提供される相対パス修正サポートです。コントロール。マスターページ内でこれを使用して、プロジェクト全体で再利用される.CSSスタイルシートを簡単に参照できます(プロジェクトがルート参照されているかサブアプリケーションであるかに関係なく):
ヘッドコントロールのパス修正機能は、相対.CSSスタイルシートパスを取得し、それがルート参照されたWebサイトまたはサブサイトの一部であるかどうかに関係なく、実行時にスタイルシートへの絶対パスを正しく出力します。応用。
所属していません StackOverflow