Ajax ExtenderコントロールのJavaScript依存関係を管理する方法
-
27-10-2019 - |
質問
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()
コントロールの方法とこれらのスクリプトタグのレンダリングの処理。