当您在Label控件上设置AssociatedControlID
属性时,它会将<label>
HTML标记的for
属性设置为目标控件的ClientID:
<label id="Label" for="TextBox">Dat TextBox</label>
<input id="TextBox" name="TextBox" type="text">
我已经创建了一个服务器控件,其中包含一个TextBox,我希望标签将其for
属性呈现给控件的内部TextBox。我的第一个想法是直接指向我的服务器控件:
<asp:Label ID="AwesomeLabel" runat="server" AssociatedControlID="AwesomeControl">
Check out my awesome control!</asp:Label>
<custom:MyControl ID="AwesomeControl" runat="Server" />
但这会使for
属性指向围绕服务器控件内容呈现的<span>
:
<label id="AwesomeLabel" for="AwesomeControl">Check out my awesome control!</label>
<span id="AwesomeControl">
<input name="AwesomeControl$ct123" type="text"></span>
好像AssociatedControlID
通过简单地获取目标控件的ClientID来设置for
属性:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.label.associatedcontrolid.aspx
我不想进入页面的.aspx.cs以编程方式设置它,因为经常使用此服务器控件,我希望它的实现尽可能快。
还有其他方法可以使Label标签将for
属性呈现给我的服务器控件的内部TextBox,无论是在.aspx标记中还是从我的服务器控件的代码中?
答案 0 :(得分:5)
如果您的usercontrol具有ID AwesomeControl 且usercontrol中的文本框具有ID AwesomeTextbox ,则必须将AssociatedControlID设置为: AwesomeControl:AwesomeTextbox 强>
<asp:Label ID="AwesomeLabel" runat="server" AssociatedControlID="AwesomeControl:AwesomeTextbox">
Check out my awesome control!</asp:Label>
<custom:MyControl ID="AwesomeControl" runat="Server" />
答案 1 :(得分:1)
目前你的span是拥有你所指向的id并且你的输入没有任何ID的元素。
为您的输入元素提供ID并更改标签,使其指向该ID。
<asp:Label ID="AwesomeLabel" runat="server" AssociatedControlID="txtAwesomeControl">
Check out my awesome control!</asp:Label>
<span id="AwesomeControl">
<input id="txtAwesomeControl" name="AwesomeControl$ct123" type="text" />
</span>