2

Ajax Extender コントロール ベースは依存関係管理を提供しますか? 動作で使用されるいくつかのベース スクリプトを使用する一連のコントロールを作成しています。ここからエクステンダー コントロールの作成では、すべてのコントロール コードにベース スクリプトを含める必要があるように見えます。したがって、エクステンダー ベースは、各コントロールに対して同じスクリプト [キャッシュされたもの] を提供するか、または同じスクリプトが各コントロールに対して提供されますか。

たとえば、jQuery に依存するコントロールを開発しています。私はエクステンダー コントロールを開発しているので、以下のようなインターフェイスからこのメソッドを実装する必要があります。jquery スクリプトに注目してください。

protected override IEnumerable<ScriptReference> GetScriptReferences()
{
    ScriptReference reference = new ScriptReference();
    reference.Path = ResolveClientUrl("jQuery.js");
    reference.Path = ResolveClientUrl("FocusBehavior.js");
    return new ScriptReference[] { reference };
}

今、私は別のコントロールに同じjqueryスクリプトを持っているので、両方のコントロールが同じページにある場合、これは2回提供されることを意味しますか? また別の質問ですが、

エクステンダー コントロールがデバッグ スクリプトではなく実稼働スクリプトを出力する方法 また、スクリプト マネージャーを必要としない masterpage を使用しているため、スクリプトを scriptmanager に登録することはできません。

いくつかの仕様:

VS2005で開発

.NET 2.0、ASP.NET 2.0

Sizzle、emile.js、spine.js に対するスクリプトの依存関係。これらはすべてのコントロールに必要な基本スクリプトです。

4

1 に答える 1

0

ASP.NET コントロールはページ上の複数のインスタンスに存在する可能性があるため、ASP.NET フレームワークはレンダリング プロセスで重複オブジェクトを適切に処理するScriptReferenceと思います。

たとえば、ASP.NET ページでは次のことができます。

<act:Calendar runat="server" ID="calendar1"/>
<act:Calendar runat="server" ID="calendar2"/>

これらのコントロールは両方とも同じスクリプトに依存していますが、フレームワークはそれらを 2 回ロードしません。

あなたの状況では、おそらく次のようなことをしたいと思うでしょう:

protected override IEnumerable<ScriptReference> GetScriptReferences()
{
    List<ScriptReference> references = new List<ScriptReference>();

    #if DEBUG
    // Load Debug Version
    references.Add(new ScriptReference(ResolveClientUrl("~/Path_To_Your_Debug_JS.js"));     
    #else
    // Load Minified Version
    references.Add(new ScriptReference(ResolveClientUrl("~/Path_To_Your_Release_JS.js"));
    #endif

    return references;
}

これにより、デバッグ モードかリリース モードかに応じて、Javascript ファイルのデバッグ バージョンまたはリリース (縮小) バージョンのいずれかを提供できるようになります。

あなたの MasterPage が を必要としないというコメントについてはわかりませんScriptManagerScriptManagerコントロールでメソッドを呼び出し、GetScriptReferences()それらのスクリプト タグのレンダリングを処理するなどの責任を処理する何らかのメカニズムがあると仮定します。

于 2011-09-13T20:33:46.953 に答える