0

重複の可能性:
javascriptを使用してコンテンツコントロール内のテキストボックスのclientIdが必要

TextBoxにアクセスする必要のあるスクリプトがありますが、ASP.NETはいくつかのクレイジーな名前を生成しますctl00$ContentPlaceHolder1$txtEmpFirstName。...クライアント側のスクリプトでは、このコントロールにアクセスするために何をすべきかを知ることができません。

これをどのように回避しますか?また、ボタンが押されたときにサーバー側のコードからテキストにアクセスできるようにする必要がありますか?

4

2 に答える 2

6

ClientIDクライアント側のコードでTextBoxのプロパティにアクセスできます。

<%= TextBox.ClientID %>
于 2011-11-23T20:30:05.710 に答える
1

この状況を処理する方法は、クライアント側でアクセスする必要がある各コントロールに対して、サーバー側で JavaScript 変数を記述することです。

例えば:

string sScript = "var m_stxtEmpFirstName = '" + txtEmpFirstName.ClientID + "'";

ScriptManager.RegisterStartupScript(this, this.GetType(), "MyScript", sScript, true);

これは、いくつかの状況で必要です。

1) JavaScript がコード ページとは別の場合

2) クライアント側でコントロールを識別するためにわずかに異なる方法を必要とするサードパーティのコントロールを扱っている場合 (ClientID のアンダースコアを x に置き換えるか、完全に削除する必要がある一部のコントロールを使用します)。はい、インライン スクリプトでこれを実行できますが、コントロールにアクセスするたびに忘れずに実行する必要があります。サーバー側でこれを行うと、適切なクライアント ID を毎回正しく生成できる汎用のコントロール タイプ固有のメソッドを作成できます。

3) 設計時に clientid が不明な可能性のあるコントロールをページに動的に生成した場合。

これらは、ID をコード ビハインドで js 変数として生成する必要がある、私が遭遇した頭のてっぺんからのシナリオです。他にもたくさんあることを私は知っています。

于 2011-11-23T21:04:59.340 に答える