7

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

  <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 ページのマスターページである場合、問題なく動作します。

この Masterpage が子 Masterpage の Masterpage であり、新しい ASPX ページが子 Masterpage を MasterPage として使用する場合、次のように表示されます。

'' アプリケーションでサーバー エラーが発生しました。

コントロールにコード ブロック (つまり <% ... %>) が含まれているため、Controls コレクションを変更できません。

チルダ (~) スタイルの相対パスを保持するベース マスターページにグローバル リソース (Javascript/CSS) を含めるための推奨される方法は何ですか?

4

3 に答える 3

10

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>
于 2008-10-08T21:11:43.797 に答える
5

やってみました:

<script type="text/javascript" src='<%= Page.ResolveClientUrl("~/javascript/actions.js") %>'></script>
于 2008-10-08T17:31:20.823 に答える
4

ScottGuによると、

活用すべき 1 つのヒントは、head runat="server" コントロールによって提供される相対パス修正サポートです。これをマスター ページ内で使用すると、プロジェクト全体で再利用される .CSS スタイルシートを簡単に参照できます (プロジェクトがルート参照かサブアプリケーションかに関係なく)。

ヘッド コントロールのパス修正機能は、相対 .CSS スタイルシート パスを取得し、それがルート参照 Web サイトであるかサブアプリケーションの一部であるかに関係なく、実行時にスタイルシートへの絶対パスを正しく出力します。

于 2008-10-08T17:23:58.530 に答える