VS 2008のネストされたマスターページにJavaScriptへの相対参照を含める好ましい方法

StackOverflow https://stackoverflow.com/questions/183859

質問

当社のベースマスターページには次のようなものがあります

  <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サイトまたはサブサイトの一部であるかどうかに関係なく、実行時にスタイルシートへの絶対パスを正しく出力します。応用。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top