カスタムASP.netサーバーコントロール用に生成されたHTMLコードは、id属性の代わりに子コントロールのname属性を生成します。このようなもの:独自の「ID」属性の代わりにASP.netの子コントロール用に生成されたHTML「name」属性
<span id="GridView2_ctl02_editdis">
<input type="text" name="GridView2$ctl02$editdis$ctl00"/>
</span>
カスタムコントロール自体のIDは明らかに適切です。
私には見知らぬ人ですが、IDが生成されるのは、時には(私はどのような条件ではわかりません)です。しかし、そのIDを持つFindControl()
はサーバー側で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を確認するにはどうすればよいですか?
Hmm。私はASP.netページから適切なコントロールにフォーカスを復元するために、REQUEST ["__ LASTFOCUS"]からのhtml IDを使用していました。私は今、あるIDから別のIDへのそのような直接的な変換がないことを認識しています。 '_'を '$'に置き換えることは.netバージョン間で移植可能ですか? – sandesh247
私が間違っていないならば、すべての.NETバージョンはHTML IDには "_"を使用し、内部的にはHTML名とIDに "$"を使用します。 – Ruslan