Domanda Tag etichetta HTML e ASP.NET


Qual è il modo migliore per usare il <label> tag all'interno di un'applicazione ASP.NET? Voglio che sia XHTML valido, accessibile e utilizzabile.

Capisco che il modo ottimale è questo:

<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 input cambierà, il che significa che l'attributo "for" dell'etichetta è inutile. Potrei rendere il tag label un controllo server e impostarlo come attributo "for" nel codice (Username.ClientID) ma sembra molto lavoro per una cosa così semplice.

Ho anche visto questo HTML usato in passato:

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

Qual è l'approccio ottimale?


44
2018-01-29 22:39


origine


risposte:


Io uso <asp:Label ... AssociatedControlID="Username" ...> controlli per questo. Vengono resi come <label> tag e impostare il for attributo in modo appropriato.

Nota che puoi anche nidificare altri tag all'interno del controllo Label se lo desideri:

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

65
2018-01-29 22:41



Puoi anche scriverlo 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


17
2017-07-29 04:43



Usa il <asp:Label> controllo del server. Ha una proprietà che è possibile utilizzare per impostare l'ID di controllo associato.

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

9
2018-01-29 22:43



Immagino che il modo più semplice per farlo sia questo.

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

EDIT: Wow .. tutte le stesse risposte in un minuto. =)


7
2018-01-29 22:43



Se si utilizza .NET 4, ora è possibile utilizzare la proprietà ClientIDMode per configurare uno o più controlli per l'utilizzo di ID statici o prevedibili. La proprietà ClientIDMode può essere impostata direttamente sul TextBox oppure è possibile impostarla su qualsiasi controllo genitore o sulla pagina contenente.

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

Maggiori informazioni su ClientIDMode attivo MSDN 


3
2018-05-21 14:21



Se si desidera un'etichetta, ma non si dispone di un altro controllo da utilizzare AssociatedControlID si può usare l'etichetta stessa

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

3
2017-10-13 13:45



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

0
2018-01-30 09:53



Anche tu provi e questo:

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

Questo è ciò che Visual Studio o qualsiasi altro software ti offre se trascini e rilasci un'etichetta.


0
2018-05-10 12:29