ASP.Netは、カスタムコントロールで複数のスタイルブロックとスクリプトブロックを回避します
-
07-07-2019 - |
質問
ascx-file内の独自のスタイルとスクリプトブロックを使用してカスタムコントロールを開発しています。
すべて正常に動作しますが、aspxページ内でコントロールをもう一度使用すると、スクリプトブロックとスタイルブロックも繰り返されます。
これを避ける方法
解決
これらのブロックがカスタムコントロール自体にある限り、繰り返しを削除することはできません。ブロックを別の場所に移動するか、コードで追加することを検討する必要があります。
編集:私の答えは、スクリプト/スタイルファイルへのリンクの繰り返しについて文句を言っていることを前提としています。ただし、コントロール内の完全なスクリプトについて話している場合は、 _ rick_schottの回答。
他のヒント
スクリプト
ClientScript
オブジェクトを使用して、aspxで記述する代わりに、Page_Loadにプログラムでスクリプトを登録できます。
if (!ClientScript.IsClientScriptBlockRegistered("myScript"))
{
ClientScript.RegisterClientScriptBlock(GetType(), "myScript", "//the javascript code...", true);
}
スタイル
スタイルについては、これを実現するメカニズムであるかどうかはわかりません。テーマメカニズムを使用できます。私はそれを自分で使ったことがないので、どのように機能するのかわかりません...
これを行うために考えられる唯一の方法は、カスタムコントロールをサブコントロールに分割することです。
" Body"を作成しますスタイルレスおよびスクリプトレスコントロールとしてのコントロール。次に、「デザイナー」を作成します;複数の「ボディ」を吸い込むために使用するコントロールコントロール。次に、「デザイナー」を追加できます。 aspxページを1回制御します。
" Body"の数がわからない場合パーツ"コンパイル時に必要な場合は、「デザイナー」にパラメーターを追加します。 「メインパーツ」を動的に追加できるコントロール実行時のコードビハインドから。
ところで、ダイナミックコントロールを使用したことがない場合は、楽しんでください!
すべての回答に感謝します。 「ヘルパー」を作成しました。スタイルとスクリプトを作成するコントロール。aspxページに1回だけ配置します。したがって、冗長コードなしで実際のコントロールの複数のインスタンスを追加できます。