asp.net html usability label

Etiqueta de etiqueta Html y ASP.NET



usability label (8)

Supongo 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>

EDITAR: Wow ... todas las mismas respuestas dentro de un minuto. =)

¿Cuál es la mejor manera de usar la <label> dentro de una aplicación ASP.NET? Quiero que sea XHTML válido, accesible y utilizable.

Entiendo que la forma ó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 identificación de entrada cambiará, lo que significa que el atributo "para" de la etiqueta es inútil. Podría hacer que la etiqueta etiquete un control de servidor y establecer su atributo "para" en el código (Nombre de usuario.ClienteID) 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 óptimo?


Yo uso <asp:Label ... AssociatedControlID="Username" ...> controles para esto. Se muestran como <label> y configuran el atributo for adecuada.

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

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


use el control del 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" />


<p><asp:Label ID="label1" Text="Username:" AssociatedControlID="txtUserName" runat="server"> <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p>


También puedes escribirlo así:

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

Phil Haack tiene una publicación en el blog sobre este tema


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

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

Obtenga más información sobre el ClientIDMode en MSDN


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

<asp:Label ID="Not_Span" AssociatedControlID="Not_Span" Text="Will be rendered as label" />


Tú también lo intento y esto:

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

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