Подтвердить что ты не робот

Как использовать тег <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>

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

4b9b3361

Ответ 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 или любое другое программное обеспечение дает вам, если вы перетаскиваете ярлык.