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