Как использовать тег <label> в ASP.NET?
Как я могу использовать <label>
в приложении ASP.NET? Я хочу, чтобы он был действительным, доступным и применимым.
Я понимаю, что оптимальный способ HTML заключается в следующем:
<label for="Username">Username:</label>
<input type="text" id="Username" runat="server" />
Но если приведенный выше код находится в пользовательском элементе управления ASP.NET, идентификатор входа изменится, а это означает, что метка "для" является бесполезной. Я мог бы сделать метку тегом серверного элемента управления и установить в коде его атрибут "for" (Username.ClientID
), но для такой простой вещи это кажется большой работой.
Я также видел этот HTML-код, используемый в прошлом:
<label>
<span>Username</span>
<input type="text" id="Username" runat="server" />
</label>
Каков правильный подход?
Ответы
Ответ 1
Я использую для этого элементы управления <asp:Label ... AssociatedControlID="Username" ...>
. Они отображаются как теги <label>
и соответствующим образом устанавливают атрибут for
.
Обратите внимание, что вы также можете вложить другие теги в элемент управления Label:
<asp:Label ID="UsernameLabel"
Text="Username:"
AssociatedControlID="UsernameTextBox"
runat="server">
<asp:TextBox ID="UsernameTextBox" runat="server" />
</asp:Label>
Ответ 2
Вы также можете записать его так:
<label for="<%= Username.ClientID %>">Username:</label>
<asp:TextBox ID="Username" runat="server" />
Фил Хаак имеет сообщение в блоге в этом разделе
Ответ 3
используйте серверный элемент управления <asp:Label>
. Он имеет свойство, которое вы можете использовать для установки связанного идентификатора элемента управления.
<asp:Label ID="label1" runat="server" Text="Username" AssociatedControlID="Text1" />
<asp:TextBox ID="Text1" runat="server" />
Ответ 4
Я думаю, самый простой способ сделать это это.
<asp:Label AssociatedControlID="Username" runat="server" Text="Username:"></asp:Label>
<asp:TextBox ID="Username" runat="server"></asp:TextBox>
Ответ 5
Если вы используете .NET 4, теперь вы можете использовать свойство ClientIDMode для настройки одного или нескольких элементов управления для использования статических или прогнозируемых идентификаторов. Свойство ClientIDMode может быть установлено непосредственно в TextBox или вы можете установить его на любом родительском элементе или на содержательной странице.
<label for="Username">Username:</label>
<asp:TextBox ID="Username" runat="server" ClientIDMode="Static" />
Подробнее о ClientIDMode на MSDN
Ответ 6
Если вы хотите ярлык, но не имеете другого элемента управления для использования в AssociatedControlID
, можно использовать сам ярлык
<asp:Label ID="Not_Span" AssociatedControlID="Not_Span" Text="Will be rendered as label" />
Ответ 7
<p><asp:Label ID="label1" Text="Username:" AssociatedControlID="txtUserName" runat="server"> <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p>
Ответ 8
Вы тоже попробуете и это:
<asp:Label ID="Label1" runat="server" Text="label"></asp:Label>
Это то, что Visual Studio или любое другое программное обеспечение дает вам, если вы перетаскиваете ярлык.