3

したがって、1つのページに複数回存在するユーザーコントロールがあります。バックエンドからuserControl1.someFunction();を呼び出すことができます。そして、someFunction()を呼び出すユーザーコントロールを指定します。しかし、ユーザーコントロールのフロントエンドにjava-script関数がある場合、個々のユーザーコントロールに対してそれを呼び出すことはできません。javaFunction()を呼び出すだけですが、これは呼び出すユーザーコントロールを指定しません。これが私がやりたいことです、clientsideUserControl1.javaFunction(); これは可能ですか?私がやっているのは、関数名IE:clientsideUserControl1_javaFunction()を動的に生成することですが、これを行うにはもっと良い方法が必要だと感じています。

4

3 に答える 3

3

通常、1つの関数を使用して、ページ全体で機能するようにするか、パラメーター(関心のあるユーザーコントロールへの参照)を取得するように変更することができます。

そうすれば、同じjavascript関数の複数のコピーを持つ必要はありません。

だから代わりに

function CLIENTID_javascriptFunction{
}

あなたはグローバルレベルで機能しているでしょう:

function javascriptFunction(id){

}

関心のあるdomオブジェクトのIDを使用して呼び出します(ClientIDを使用してコントロールのDOM IDを取得します)

于 2012-07-03T17:56:51.590 に答える
1

この場合、ユーザーコントロールの代わりにサーバーコントロールを使用する方がよいことがわかりました。サーバーコントロールは作成が少し複雑に見えますが、javascript関数のスコープを保護します。

違いについて説明しているリンクは次のとおりです。 http://www.hotscripts.com/forums/asp-net/31174-difference-between-user-control-custom-server-controls.html

于 2012-07-12T17:20:20.393 に答える
-1

考えられる解決策の1つは次のとおりです。

function <%= ClientID %>javaFunction()
{
  //code here
}

コントロールのクライアントIDと関数名を使用して、ユーザーコントロールごとに関数宣言を作成します。

于 2012-07-03T17:53:41.133 に答える