0

カスタム Web コントロールを構築しており、js と css を使用しています。
Js および Css ファイルは、コントロールの dll に埋め込まれます。
問題は、リソース (js および css ファイル) が再度追加されたときに、このコントロールをページに複数回追加する場合です。これらのファイルが既に追加されているかどうかを確認する方法はありますか?

このコントロールは、他のコンテナ コントロール (div など) に追加できることに注意してください。
そのため、ページ内のすべてのサブ コントロールで ID を検索する方法が必要です

ありがとう。

UPDATE1: これを使用して、jsファイルをコンテナに追加しています:

var plh = new PlaceHolder();
var js = new HtmlGenericControl("script");
jsID = "stacks";
js.Attributes.Add("src", Page.ClientScript.GetWebResourceUrl(typeof(MyControlClass), "MyControlCSFileName.ScriptFolder.stacks.js"));
js.Attributes.Add("type", "text/javascript");
js.EnableViewState = false;
plh.Controls.Add(js);
plh.RenderControl(writer);  

UPDATE2:
サーバー上でコントロールをレンダリングし、Ajax を使用して HTML の結果を返すことがあります。

4

2 に答える 2

0

Page.ClientScript.RegisterClientScriptInclude を使用して JS を登録します

例: this.Page.ClientScript.RegisterClientScriptInclude("key", Page.ClientScript.GetWebResourceUrl(this.GetType(), "yourscript.js"));

于 2012-07-09T13:00:27.280 に答える
0

使用するClientScriptManager.RegisterClientScriptBlock

参照: ClientScriptManager.RegisterClientScriptBlock

クライアント スクリプトは、キーとタイプによって一意に識別されます。同じキーとタイプのスクリプトは重複と見なされます。特定のタイプとキーのペアを持つ 1 つのスクリプトのみをページに登録できます。既に登録されているスクリプトを登録しようとしても、スクリプトの複製は作成されません。

asp.net はインスタンスを 1 つだけ追加するため、重複をチェックする必要はありません。

ただし、チェック時間を節約したい場合は、スクリプトが既に登録されているかどうかをチェックする機能を提供します: IsClientScriptBlockRegistered.

于 2012-07-10T08:10:53.633 に答える