質問

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回提供されることを意味しますか?また別の質問、

デバッグスクリプトの代わりに、エクステンダーコントロールが生産スクリプトを出力する方法は、スクリプトマネージャーにスクリプトを登録することも、スクリプトマネージャーを必要としない傑作を使用するため、私にとっては選択肢ではありません。

いくつかの仕様:

VS2005で開発されました

.NET 2.0、ASP.NET 2.0

Sizzle、Emile.js、Spine.jsへのスクリプト依存性これらはすべてのコントロールに必要な基本スクリプトです

役に立ちましたか?

解決

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

たとえば、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ファイルのデバッグまたはリリース(マニファイ)バージョンのいずれかを提供できるようになります。

あなたの傑作についてあなたのコメントについてはわかりません ScriptManager. 。私はあなたが、 ScriptManager 電話するようなもの GetScriptReferences() コントロールの方法とこれらのスクリプトタグのレンダリングの処理。

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