如何在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>
什么是正确的方法?
答案 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或任何其他软件在您拖放标签时提供的内容。