如何使用ASP.NET应用程序中的<label>标签?我希望它是有效的,可访问的,并可以使用。

我理解的最佳方式HTML是这样的:

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

但是,如果上述代码是在ASP.NET用户控制,输入的ID会发生变化,这意味着标签的“为”属性是无用的。我可以使标签标记服务器控件,并设置其“为”代码(Username.ClientID)属性,但它似乎想了很多工作,为这样一个简单的事情。

我也看到这个HTML在过去使用:

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

什么是适当的方法?

有帮助吗?

解决方案

我用于此<asp:Label ... AssociatedControlID="Username" ...>对照。他们得到呈现为<label>标签,并设置for封底。

请注意,您可以在Label控件中嵌套其它标签,如果你想:

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

其他提示

您也可以写这样的:

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

菲尔哈克对这个博客文章主题

使用<asp:Label>服务器控制。它具有可用于设置相关联的控制ID的属性。

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

我想这样做是最简单的方法。

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

如果您使用.NET 4你现在可以使用ClientIDMode属性来配置一个或多个控件使用静态的或可预测的ID。 ClientIDMode属性可以在文本框直接设置或可以将其设置在任何父控制或包含页。

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

了解更多关于 MSDN <所述的ClientIDMode / A>

如果你想有一个标签,但没有其他控制AssociatedControlID使用一个可以使用标签本身

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

您也是我尝试这样的:

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

这是什么Visual Studio中,或任何其他软件给你,如果你拖放一个标签。

scroll top