Question

Comment puis-je utiliser la balise dans une <label> application ASP.NET? Je veux qu'il soit valide, accessible et utilisable.

Je comprends la meilleure façon HTML est la suivante:

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

Mais si le code ci-dessus est dans un contrôle utilisateur ASP.NET, l'ID d'entrée changera, ce qui signifie « pour » l'étiquette de l'attribut est inutile. Je pourrais faire l'étiquette de l'étiquette d'un contrôle serveur et définissez son « pour » attribut dans le code (Username.ClientID), mais il semble que beaucoup de travail pour une chose si simple.

Je l'ai vu aussi ce code HTML utilisé dans le passé:

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

Quelle est la bonne approche?

Était-ce utile?

La solution

J'utilise des commandes pour ce <asp:Label ... AssociatedControlID="Username" ...>. Ils se rendaient comme balises et <label> définies correctement l'attribut for.

Notez que vous pouvez également imbriquer d'autres balises dans le contrôle de l'étiquette si vous souhaitez:

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

Autres conseils

Vous pouvez également écrire comme ceci:

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

Phil Haack a sur ce sujet

utiliser le contrôle du serveur <asp:Label>. Il a une propriété que vous pouvez utiliser pour définir l'ID de contrôle associé.

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

Je suppose que la meilleure façon de le faire est la suivante.

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

Si vous utilisez .NET 4, vous pouvez maintenant utiliser la propriété ClientIDMode pour configurer un ou plusieurs contrôles à utiliser ID statiques ou prévisibles de. La propriété ClientIDMode peut être définie sur la zone de texte directement ou vous pouvez le mettre sur un contrôle parent ou la page contenant.

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

En savoir plus sur le ClientIDMode sur MSDN

Si vous voulez une étiquette, mais ne pas un autre contrôle à utiliser dans on peut utiliser AssociatedControlID l'étiquette elle-même

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

Vous mon aussi essayer de ceci:

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

est ce que Visual Studio, ou tout autre logiciel vous donne si vous glissez-déposez une étiquette.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top