40

マスターページのない aspx ページで JQuery を使用する場合は問題ありませんが、マスターページのあるページで使用しようとすると機能しないため、jquery ファイルとその他のスクリプト ファイルをマスターの代わりにページ。10ページある場合、10ページすべてに対してこれを行っていますが、これは間違っていることがわかっています。以下のサンプル マスターページでは、スクリプト ファイルをどこに配置しますか。

<html>
<head runat="server">
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <asp:ContentPlaceHolder ID="ContentPanel" runat="server">
    </asp:ContentPlaceHolder>            
</body>
</html>

私は最近fancyboxプラグインを使用しましたが、jqueryスクリプトとfancyboxスクリプトをマスターページに配置する代わりに、それを機能させることに不満を感じたため、スクリプトを実行したいページに配置しました。一番下、最後の asp:Content の直前。もちろん、fancybox プラグインを他のページで使用したい場合は、マスターページだけでなく、5 つのページすべてに jquery スクリプトと fancybox スクリプトを配置するという問題があります。マスターページを扱う場合、上記の例を使用すると、すべてがどこに行くのでしょうか?

4

4 に答える 4

56

通常どおり、マスター ページ内でメインの jQuery スクリプトを宣言します。

<head runat="server">
  <link href="/Content/Interlude.css" rel="Stylesheet" type="text/css" />
  <script type="text/javascript" src="/Scripts/jquery-1.3.2.min.js"></script>
  <asp:ContentPlaceHolder ID="head" runat="server">
  </asp:ContentPlaceHolder>
</head>

そして、Head ContentPlaceholder を参照するコンテンツ コントロール内に、ページ固有の JS ファイルを読み込むことができます。

ただし、より良いオプションは、ScriptManagerおよびScriptManagerProxyコントロールを調べることです。これらにより、JS ファイルがクライアントに提供される方法をより詳細に制御できます。

したがって、マスター ページに ScriptManager コントロールを配置し、その中に jQuery コア コードへの参照を追加します。

<body>
  <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
      <Scripts>
        <asp:ScriptReference Path="/Scripts/jquery-1.3.2.min.js" />
      </Scripts>
    </asp:ScriptManager>

次に、いくつかのカスタム JS ファイルまたは jQuery プラグインを必要とするページで、次のものを使用できます。

<asp:Content ID="bodyContent" ContentPlaceholderID="body">
  <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
      <Scripts>
        <asp:ScriptReference Path="/Scripts/jquery.fancybox-1.2.1.pack.js" />
      </Scripts>
  </asp:ScriptManagerProxy>

ScriptManager を使用すると、LoadScriptsBeforeUIを使用して(または、False に設定した後で) スクリプトをレンダリングするページ上の場所を制御するなどのことができます。

于 2009-04-08T19:44:22.310 に答える
8

私はこの方法を使用します。

<script type="text/javascript" language="javascript" src='<%=ResolveUrl("~/scripts/jquery.js") %>' ></script>

タグの上に置くだけ...

<asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
于 2010-02-11T01:40:25.623 に答える
2

スクリプトに別の contentplaceholder を使用してください。このように見えるはずです

<script type="text/javascript" src="myscript.js" />
<asp:ContentPlaceHolder ID="ScriptContent" runat="server">

</asp:ContentPlaceHolder>  

このタグは、マスターページの下部、</body>タグの近くに配置します。これにより、マスターページだけでなくページにもスクリプトを追加できます。ページ ソースを表示し、HTML が正しい方法でレンダリングされていることを確認して、スクリプトが正しい順序で読み込まれていることを確認します。幸運を。

もう1つ、jQueryとFancyBoxが他のjsよりも先にロードされることを確認してください。そうしないと機能しません。JavaScript は呼び出された順にロードされます。jQuery は最初にロードする必要があります。

于 2009-04-08T19:19:10.793 に答える