TextBoxにアクセスする必要のあるスクリプトがありますが、ASP.NETはいくつかのクレイジーな名前を生成しますctl00$ContentPlaceHolder1$txtEmpFirstName
。...クライアント側のスクリプトでは、このコントロールにアクセスするために何をすべきかを知ることができません。
これをどのように回避しますか?また、ボタンが押されたときにサーバー側のコードからテキストにアクセスできるようにする必要がありますか?
TextBoxにアクセスする必要のあるスクリプトがありますが、ASP.NETはいくつかのクレイジーな名前を生成しますctl00$ContentPlaceHolder1$txtEmpFirstName
。...クライアント側のスクリプトでは、このコントロールにアクセスするために何をすべきかを知ることができません。
これをどのように回避しますか?また、ボタンが押されたときにサーバー側のコードからテキストにアクセスできるようにする必要がありますか?
ClientID
クライアント側のコードでTextBoxのプロパティにアクセスできます。
<%= TextBox.ClientID %>
この状況を処理する方法は、クライアント側でアクセスする必要がある各コントロールに対して、サーバー側で 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 変数として生成する必要がある、私が遭遇した頭のてっぺんからのシナリオです。他にもたくさんあることを私は知っています。