Когда вы устанавливаете свойство AssociatedControlID
в элементе управления Label, он отображает HTML-тег <label>
с атрибутом 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
устанавливает атрибут for
, просто получая ClientID целевого элемента управления:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.label.associatedcontrolid.aspx
Я не хочу заходить на страницу .aspx.cs, чтобы установить это программно, потому что этот серверный элемент управления используется часто, и я бы хотел, чтобы его реализация была максимально быстрой.
Есть ли другой способ заставить теги Label отображать свои атрибуты for
для внутреннего TextBox моего серверного элемента управления, либо в разметке .aspx, либо из кода моего серверного элемента управления?