it-swarm-es.com

¿Cómo usar la etiqueta <label> en ASP.NET?

¿Cómo puedo usar la etiqueta <label> dentro de una aplicación ASP.NET? Quiero que sea válido, accesible y utilizable.

Entiendo que la forma HTML óptima es esta:

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

Pero si el código anterior está en un control de usuario ASP.Net, la ID de entrada cambiará, lo que significa que el atributo "para" de la etiqueta es inútil. Podría hacer que la etiqueta sea un control del servidor y establecer su atributo "for" en el código (Username.ClientID), pero parece mucho trabajo para algo tan simple.

También he visto este HTML usado en el pasado:

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

¿Cuál es el enfoque adecuado?

47
Alex York

Yo uso <asp:Label ... AssociatedControlID="Username" ...> controles para esto. Se procesan como etiquetas <label> y establecen el atributo for de manera apropiada.

Tenga en cuenta que también puede anidar otras etiquetas dentro del control Etiqueta si lo desea:

<asp:Label ID="UsernameLabel"
           Text="Username:"
           AssociatedControlID="UsernameTextBox"
           runat="server">
    <asp:TextBox ID="UsernameTextBox" runat="server" />
</asp:Label>
67
Sean Bright

También puedes escribirlo así:

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

Phil Haack tiene un publicación de blog sobre este tema

17
Christian Hagelid

use el control de servidor <asp:Label>. Tiene una propiedad que puede usar para establecer la ID de control asociada.

<asp:Label ID="label1" runat="server" Text="Username" AssociatedControlID="Text1" />
<asp:TextBox ID="Text1" runat="server" />
10
Matt Brunell

Creo que la forma más fácil de hacerlo es esto.

<asp:Label AssociatedControlID="Username" runat="server" Text="Username:"></asp:Label>
<asp:TextBox ID="Username" runat="server"></asp:TextBox>
7
Brian Kim

Si está usando .NET 4, ahora puede usar la propiedad ClientIDMode para configurar uno o más controles para usar ID estáticos o predecibles. La propiedad ClientIDMode se puede establecer en TextBox directamente o puede establecerla en cualquier control principal o en la página que lo contiene.

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

Lea más sobre ClientIDMode en MSDN

3
Christian Hagelid

Si desea una etiqueta, pero no tiene otro control para usar en AssociatedControlID, puede usar la etiqueta en sí

<asp:Label ID="Not_Span" AssociatedControlID="Not_Span" Text="Will be rendered as label" />
3
RMalke
<p><asp:Label ID="label1"           Text="Username:"           AssociatedControlID="txtUserName"           runat="server">    <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p>
0
chugh97

Usted también puede intentarlo y esto:

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

Esto es lo que Visual Studio o cualquier otro software le proporciona si arrastra y suelta una etiqueta.

0
magn