我有一个复合控件呈现:
<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();
}
但是这也是我想要的属性跨度的唯一性。
<span>
<span id="propertyID"> // I still want: <span id="controlID_propertyID">
<input id="controID_inputID">
有没有办法可以实现我想要的,而无需将CompositeControl切换为WebControl。我还想避免注入像:
这样的代码块 <label for="<%=control.ClientID%>_input">
或通过代码隐藏,文字或诸如此类的任何类似解决方法。
答案 0 :(得分:0)
考虑更改您的控件的ClientIDMode - 可以选择使子控件的ID“可预测”。 http://msdn.microsoft.com/ru-ru/library/system.web.ui.control.clientidmode(v=vs.100).aspx
还有一件事:使用AssociatedControlID,你在这里传递哪个控件?看起来你正在传递父母本身,而不是孩子。