我有一个呈现的复合控件:
<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">
或者通过代码隐藏、文字或诸如此类的任何类似的变通方法。