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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top