プロジェクトのフォームフレームワークを作成していますが、asp:LabelのAssociatedControlIDプロパティを関連するTextBoxにプログラムで設定しようとすると、 ClientIDを呼び出してIDを取得する必要があることがわかりました(nullではありません)。
デバッグ中、この中間ウィンドウの使用は問題を示しています。
_inputTextBox.ID
null
_inputTextBox.ClientID
"ctl00_MainContent_ctl01"
_inputTextBox.ID
"ctl01"
(2回目のID呼び出し時に値が存在します)
オーバーライドされたCreateChildControls()で_inputLabel.AssociatedControlID = _inputTextBox.IDを設定し、WebControlのRenderContents()で試しました。
最初にClientIDを未使用の一時変数にロードしようとしましたが、次のように機能します。
var x = _inputTextBox.ClientID;
_inputLabel.AssociatedControlID = _inputTextBox.ID;
与える:(正しい)
<label for="ctl00_MainContent_ctl01">Name of customer</label>
<input type="text" id="ctl00_MainContent_ctl01" name="ctl00$MainContent$ctl01"/>
代わりに:(正しくない)
<span>Name of customer</span>
<input type="text" id="ctl00_MainContent_ctl01" name="ctl00$MainContent$ctl01"/>
私の質問は-なぜこのハックを実行しなければならないのですか?IDを確実に入力するためのより良い方法はありますか?
ありがとう。