it-swarm.dev

HTML etiket etiketi ve ASP.NET

ASP.NET uygulamasında <label> etiketini kullanmanın en iyi yolu nedir? XHTML'nin geçerli, erişilebilir ve kullanılabilir olmasını istiyorum.

Anladığım en iyi yol şudur:

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

Ancak, yukarıdaki kod bir ASP.Net Kullanıcı kontrolünde ise, giriş kimliği değişecektir; bu, etiketin "for" özniteliğinin faydasız olduğu anlamına gelir. Etiket etiketini bir sunucu kontrolü yapabilir ve koddaki "for" özniteliğini ayarlayabilirim (Username.ClientID) ancak bu kadar basit bir şey için çok fazla iş gibi görünüyor.

Geçmişte kullanılan bu HTML'yi de gördüm:

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

Optimal yaklaşım nedir?

45
Alex York

Bunun için <asp:Label ... AssociatedControlID="Username" ...> kontrollerini kullanıyorum. <label> etiketleri olarak işlenir ve for niteliğini uygun şekilde ayarlarlar.

İsterseniz, diğer etiketleri de Etiket denetimine yerleştirebileceğinizi unutmayın:

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

Ayrıca şöyle yazabilirsiniz:

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

Phil Haack'ın bu konuda bir blog yazısı var

18

<asp:Label> sunucu kontrolünü kullanın. İlişkili kontrol kimliğini ayarlamak için kullanabileceğiniz bir özelliğe sahiptir.

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

Sanırım bunu yapmanın en kolay yolu bu.

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

EDIT: Vay .. bir dakika içinde tüm aynı cevaplar. =)

7
Brian Kim

.NET 4 kullanıyorsanız, statik veya tahmin edilebilir kimlikleri kullanmak üzere bir veya daha fazla kontrolü yapılandırmak için ClientIDMode özelliğini kullanabilirsiniz. ClientIDMode özelliği doğrudan TextBox'ta ayarlanabilir ya da herhangi bir üst kontrolde ya da içeren sayfada ayarlayabilirsiniz.

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

ClientIDMode hakkında MSDN hakkında devamını oku 

3

Bir etiket istiyorsanız, ancak AssociatedControlID içinde kullanmak için başka bir denetime sahip değilseniz, etiketin kendisini kullanabilirsiniz.

<asp:Label ID="Not_Span" AssociatedControlID="Not_Span" Text="Will be rendered as label" />
3
RMalke
<p><asp:Label ID="label1"           Text="Username:"           AssociatedControlID="txtUserName"           runat="server">    <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p>
0
chugh97

Siz de benim deneyin ve bu:

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

Bir etiketi sürükleyip bırakırsanız Visual Studio'nun veya başka bir yazılımın size sağladığı şey budur. 

0
magn