Как использовать тег <label>в ASP.NET? - PullRequest
47 голосов
/ 30 января 2009

Как я могу использовать тег <label> в приложении ASP.NET? Я хочу, чтобы он был действительным, доступным и применимым.

Я понимаю, что оптимальный способ HTML заключается в следующем:

<label for="Username">Username:</label>
<input type="text" id="Username" runat="server" />

Но если приведенный выше код находится в пользовательском элементе управления ASP.NET, идентификатор входа изменится, означая, что атрибут метки «for» бесполезен. Я мог бы сделать метку тегом серверного элемента управления и установить в коде его атрибут «for» (Username.ClientID), но для такой простой вещи, похоже, много работы.

Я также видел этот HTML-код, использовавшийся в прошлом:

<label>
    <span>Username</span>
    <input type="text" id="Username" runat="server" />
</label>

Каков правильный подход?

Ответы [ 8 ]

67 голосов
/ 30 января 2009

Я использую <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>
17 голосов
/ 29 июля 2010

Вы также можете написать это так:

<label for="<%= Username.ClientID %>">Username:</label>
<asp:TextBox ID="Username" runat="server" />

У Фила Хаака есть сообщение в блоге на эту тему

10 голосов
/ 30 января 2009

использовать серверный элемент управления <asp:Label>. У него есть свойство, которое вы можете использовать для установки соответствующего идентификатора элемента управления.

<asp:Label ID="label1" runat="server" Text="Username" AssociatedControlID="Text1" />
<asp:TextBox ID="Text1" runat="server" />
7 голосов
/ 30 января 2009

Полагаю, самый простой способ сделать это - это.

<asp:Label AssociatedControlID="Username" runat="server" Text="Username:"></asp:Label>
<asp:TextBox ID="Username" runat="server"></asp:TextBox>
3 голосов
/ 13 октября 2015

Если вы хотите метку, но у вас нет другого элемента управления для использования в AssociatedControlID, вы можете использовать сам ярлык

<asp:Label ID="Not_Span" AssociatedControlID="Not_Span" Text="Will be rendered as label" />
3 голосов
/ 21 мая 2011

Если вы используете .NET 4, теперь вы можете использовать свойство ClientIDMode, чтобы настроить один или несколько элементов управления для использования статических или предсказуемых идентификаторов. Свойство ClientIDMode может быть установлено непосредственно в TextBox или вы можете установить его для любого родительского элемента управления или содержащей его страницы.

<label for="Username">Username:</label>
<asp:TextBox ID="Username" runat="server" ClientIDMode="Static" />

Узнайте больше о ClientIDMode на MSDN

0 голосов
/ 10 мая 2016

Вы также можете попробовать это:

<asp:Label  ID="Label1" runat="server" Text="label"></asp:Label>

Это то, что Visual Studio или любое другое программное обеспечение дает вам, если вы перетаскиваете метку.

0 голосов
/ 30 января 2009
<p><asp:Label ID="label1"           Text="Username:"           AssociatedControlID="txtUserName"           runat="server">    <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...