レンダリングする複合コントロールがあります:
<span id="controlID">
<span id="controID_propertyID">
<input id="controID_inputID">
私が抱えている問題は、ラベルを入力にバインドするために AssociatedControlID を参照しようとすると、次のようになります。
<label for="controlID">
私が欲しいところ:
<label for="controlID_inputID">
私はもう試した:
public override string ClientID
{
get
{
return _input.ClientID;
}
}
ただし、スパンと入力の ID は同じです。
<span id="controID_inputID">
<span id="controID_propertyID">
<input id="controID_inputID">
それから私は試しました:
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Span);
}
public override void RenderEndTag(HtmlTextWriter writer)
{
writer.RenderEndTag();
}
しかし、これは私が望む Property Span の一意性も殺してしまいます。
<span>
<span id="propertyID"> // I still want: <span id="controlID_propertyID">
<input id="controID_inputID">
CompositeControl を WebControl に切り替えることなく、目的を達成できる方法はありますか。次のようなコードブロックの挿入も避けたいと思います。
<label for="<%=control.ClientID%>_input">
または、分離コード、リテラルなどによる同様の回避策。