Come utilizzare il tag
Domanda
Come posso usare il <label>
tag all'interno di un'applicazione ASP.NET? Io voglio che sia valida, accessibile e fruibile.
ho capito il modo in cui HTML ottimale è questa:
<label for="Username">Username:</label>
<input type="text" id="Username" runat="server" />
Ma se il codice di cui sopra è in un controllo utente ASP.NET, l'ID di ingresso cambia, significa dell'etichetta "a" attributo è inutile. Potrei fare il tag label un controllo server e impostare il suo attributo "for" nel codice (Username.ClientID
), ma sembra che un sacco di lavoro per una cosa così semplice.
Ho visto anche questo HTML usato in passato:
<label>
<span>Username</span>
<input type="text" id="Username" runat="server" />
</label>
Qual è l'approccio corretto?
Soluzione
Io uso <asp:Label ... AssociatedControlID="Username" ...>
controlli per questo. Vengono resi come <label>
tag e impostare l'attributo di for
in modo appropriato.
Si noti che è anche possibile nidificare altri tag all'interno del controllo Label, se si desidera:
<asp:Label ID="UsernameLabel"
Text="Username:"
AssociatedControlID="UsernameTextBox"
runat="server">
<asp:TextBox ID="UsernameTextBox" runat="server" />
</asp:Label>
Altri suggerimenti
Si può anche scrivere in questo modo:
<label for="<%= Username.ClientID %>">Username:</label>
<asp:TextBox ID="Username" runat="server" />
Phil Haack ha un post sul blog su questo argomento
utilizzare il <asp:Label>
controllo server. Ha una proprietà che è possibile utilizzare per impostare l'ID controllo associato.
<asp:Label ID="label1" runat="server" Text="Username" AssociatedControlID="Text1" />
<asp:TextBox ID="Text1" runat="server" />
Credo che il modo più semplice per farlo è questo.
<asp:Label AssociatedControlID="Username" runat="server" Text="Username:"></asp:Label>
<asp:TextBox ID="Username" runat="server"></asp:TextBox>
Se si utilizza .NET 4 è ora possibile utilizzare la proprietà ClientIDMode per configurare uno o più controlli da usare identità statiche o prevedibili di. La proprietà ClientIDMode può essere impostata sul TextBox direttamente o è possibile impostarlo su qualsiasi controllo genitore o la pagina che contiene.
<label for="Username">Username:</label>
<asp:TextBox ID="Username" runat="server" ClientIDMode="Static" />
Per saperne di più sul ClientIDMode su MSDN
Se si desidera un'etichetta, ma non hanno un altro controllo da utilizzare in AssociatedControlID
si può utilizzare l'etichetta stessa
<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>
I miei anche provare e questo:
<asp:Label ID="Label1" runat="server" Text="label"></asp:Label>
Questo è ciò che Visual Studio, o qualsiasi altro software ti dà, se si trascina un'etichetta.