11

ASP.NET AJAX (UpdatePanel を含む) と、バックグラウンドの異なる複数の開発者によって作成された jQuery を組み合わせて使用​​する ASP.NET アプリケーションを使用しています。

ScriptManager 自体に含まれるスクリプトもあれば、コード ビハインドで<asp:ScriptManager><Scripts><asp:ScriptReference....使用されるものもあれば、直接スクリプトを含めるために使用されるものもあります。Page.ClientScript.RegisterClientScriptInclude<script src="">

可能であれば、これを処理する単一の方法に統合したいと思いますが、それぞれの方法の長所と短所が何であり、どの方法が好ましいかはわかりません。


一例は次のとおりです。

protected override void Render(HtmlTextWriter writer)
 {
    Page.ClientScript.RegisterClientScriptInclude("jQuery", ResolveClientUrl("~/scripts/jquery/js/jquery-1.4.2.min.js"));    
    base.Render(writer);
}

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/scripts/jquery/js/jquery-1.4.2.min.js" />
    </Scripts>
</asp:ScriptManager>

<script src="Scripts/jQuery/js/jquery-1.4.2.min.js" type="text/javascript"></script>
4

3 に答える 3

8

Anは、他のasp.netコントロール宣言がプログラムによる実行と似ているのと同様に<asp:scriptreference>、呼び出しと宣言的に同等です。ScriptManager.RegisterScriptBlock()Controls.Add()

そうは言っても、実際には「好ましい方法」はありません。.RegisterScript...()配布可能なWebコントロールを構築している場合は、ユーザーがマークアップを追加する必要があるのではなく、コントロールのセットアップルーチンからさまざまなメソッドを呼び出す必要があります。

Webサイトにスクリプトを含めるだけの場合は、マークアップ方式を使用する方がおそらく便利です。

Ajax呼び出し中にスクリプトを追加する場合は、を使用して追加することをお勧めしますScriptManager。通常のポストバックにスクリプトを追加する場合は、を使用して追加することをお勧めしますClientScriptManager

だから...賛否両論を列挙するのは難しいです。あなたの場合、再配布可能なコードを作成していない場合、最も明白で簡単な方法は、マークアップを介してスクリプト参照を含めることです。これは、スクリプト参照がより見やすくなる傾向があるためです。ただし、すべてのメソッドが理由で存在し、複数のメソッドを使用する必要がある場合があるため、すべてのオカレンスを1つのメソッドに統合できるかどうかはわかりません。

于 2010-07-07T19:39:09.377 に答える
6

すべてのスクリプトをマークアップに含めることが常に可能とは限りません。
スクリプトが動的データに依存している場合は、コード ビハインドからスクリプトを「注入」する必要があります。

私のルールは、可能であればコード ビハインドからスクリプトを「注入」することを常に避け、それを最後の手段としてのみ使用することです。

編集:
多数の異なるスクリプト ファイルがある場合は、scriptmanager を使用することをお勧めします。
scriptmanager を使用すると、すべてのスクリプトが単一のファイルに「連結」されます。これは、ブラウザがスクリプトをダウンロードする方法に影響を与えます。通常、ブラウザには同時接続が 2 つまでに制限されており、スクリプトが 10 個ある場合は、5 つの手順ですべてをダウンロードする必要があります。Scriptmanager は、すべてが 1 つのステップで行われるようにします。

于 2010-07-07T19:33:36.847 に答える
1

Ajax スクリプト ローダーをお勧めします (asp.net、asp.net ajax ライブラリ、jquery 環境で作業している場合)

http://www.asp.net/ajaxlibrary/Ajax%20Script%20Loader.ashx

http://www.asp.net/ajaxlibrary/HOW%20TO%20Combine%20Scripts%20using%20the%20Script%20Loader.ashx

于 2010-07-07T19:35:28.930 に答える