如何在ASP.NET中使用<label>标签?</label>

时间:2009-01-29 22:39:38

标签: asp.net html usability label

如何在ASP.NET应用程序中使用<label>标记?我希望它有效,可访问和可用。

我理解最佳的HTML方式是:

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

但是如果上面的代码在ASP.NET用户控件中,输入ID将会改变,这意味着标签的“for”属性是无用的。我可以将label标签设置为服务器控件并在代码(Username.ClientID)中设置其“for”属性,但对于这么简单的事情来说似乎需要做很多工作。

我也看过过去使用的HTML:

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

什么是正确的方法?

8 个答案:

答案 0 :(得分:67)

我使用<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>

答案 1 :(得分:17)

您也可以这样写:

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

菲尔·哈克(Phil Haack)对此主题有blog post

答案 2 :(得分:10)

使用<asp:Label>服务器控件。它有一个属性,您可以使用它来设置关联的控件ID。

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

答案 3 :(得分:7)

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

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

答案 4 :(得分:3)

如果您使用的是.NET 4,现在可以使用ClientIDMode属性配置一个或多个控件以使用静态ID或可预测ID。 ClientIDMode属性可以直接在TextBox上设置,也可以在任何父控件或包含页面上设置。

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

详细了解MSDN

上的ClientIDMode

答案 5 :(得分:3)

如果你想要一个标签,但没有另一个控件可以在AssociatedControlID中使用,可以使用标签本身

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

答案 6 :(得分:-1)

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

答案 7 :(得分:-1)

你我也试试这个:

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

这是Visual Studio或任何其他软件在您拖放标签时提供的内容。