0

Telligent CommunityServerとの統合に使用するために、ASPでWebコントロールを作成しました。コントロールは、権限に基づいてUI要素の可視性を制御するための約10行のC#バックエンドを使用してASPで記述されていますが、機能の90%は単純なJavascriptです。

コントロールの2つのインスタンスを同じページにドロップするまで、コントロールは美しく機能します。これらはまったく同じJavascript関数を参照しているため、1つのコントロールのみが機能します。

私が持っているこの機能、この1200行のJavascriptを取得して、コントロールの各インスタンスがJavascriptの各一意のインスタンスを参照できるようにするにはどうすればよいですか?

4

2 に答える 2

1

問題がイベントをトリガーしたHTML要素を見つけることだけである場合、それは簡単です-それはイベント引数であなたに渡されます。(もちろん、その親要素を取得できます。)それで、問題を正しく理解していれば、重複するいくつかのコントロールを参照するJavaScript関数がありますか?

ここに魔法の解決策はないと思います。IDを一意にする必要があります。サーバー側のコントロール(これを自動的に処理する)を使用していない場合は、サーバー側で生成されたプレフィックスまたはサフィックスを使用できます。

<input id="<%= ParentControlId %>_mytextbox" type="text" />

ここParentControlIdで、は親コントロールの一意のIDです(長いIDを気にしない場合は、Control.IDを使用できます)。

もちろん、コントロールインスタンスごとにJavaScript関数を複製するのではなく、JavaScript関数を再利用するようにしてください。サーバーで生成されたIDアプローチを使用している場合は、ID全体を渡す必要があります。プレフィックスアプローチを使用している場合は、プレフィックスを渡すだけです。

于 2010-05-10T23:26:22.383 に答える
0

では、JavaScriptをページに取り込むためのコントロールはどのようになっていますか?直接注入しますか?ScriptReferenceを使用していますか?両方のコントロールが同じJS(同じURL)を参照している場合、ブラウザーはJSを1回だけロードします。

また、JSは古いインスタンスで記述されていますか?たとえば、Load(oControlName)のような関数がありますか、それともLoad()関数の中にハードコードされたインスタンス名がありますか?

IMO、複数の「JavaScript」を取得しようとするのは前向きな方法ではありません。コードをリファクタリングすると、答えが早くなる可能性があります。

于 2010-05-11T00:14:42.700 に答える