カスタムASP.netサーバーコントロール用に生成されたHTMLコードは、id属性ではなく、子コントロールのname属性を生成します。このようなもの :
<span id="GridView2_ctl02_editdis">
<input type="text" name="GridView2$ctl02$editdis$ctl00"/>
</span>
カスタムコントロール自体のIDは明らかに適切です。
私にとってさらに奇妙なのは、IDが時々生成されることです(どのような条件であるかはわかりません)。ただし、FindControl()
そのIDを持つaは、サーバー側でnullを返します。FindControl()
name属性の値を使用すると、問題なく機能します。
このようなもの :
<span class="TextBox" id="GridView2_ctl02_editdis">
<input type="text" id="GridView2_ctl02_editdis_ctl00" name="GridView2$ctl02$editdis$ctl00"/>
</span>
上記の場合、FindControl("GridView2$ctl02$editdis$ctl00")
正常に動作しますが、FindControl("GridView2_ctl02_editdis_ctl00")
動作しません。
一貫性のある予測可能なIDを確保するにはどうすればよいですか?