Html标签标签和ASP.NET

Ale*_*ork 48 html asp.net usability label

<label>在ASP.NET应用程序中使用标记的最佳方法是什么?我希望它是XHTML有效,可访问和可用.

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

<label for="Username">Username:</label>
<input type="text" id="Username" runat="server" />
Run Code Online (Sandbox Code Playgroud)

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

我也看过过去使用过的HTML:

<label>
    <span>Username</span>
    <input type="text" id="Username" runat="server" />
</label>
Run Code Online (Sandbox Code Playgroud)

什么是最佳方法?

Sea*_*ght 68

<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>
Run Code Online (Sandbox Code Playgroud)

  • 我也使用这种方法,但总是为label标签设置EnableViewState ="False",特别是如果它是一个实质形式.我认为视野越小越好.请参阅http://stackoverflow.com/questions/113479/when-to-enable-disable-viewstate (6认同)
  • 如果asp:Label控件具有AssociatedControlID,它将正确呈现<label>,而不是通常的<span>. (4认同)
  • 我发现在Web.Config页面设置中关闭ViewState更容易,并且仅在您需要的控件上打开它.是的,如果您只是为所有控件启用它,ViewState确实会增加并减慢速度. (3认同)

Chr*_*lid 17

你也可以像这样写:

<label for="<%= Username.ClientID %>">Username:</label>
<asp:TextBox ID="Username" runat="server" />
Run Code Online (Sandbox Code Playgroud)

Phil Haack有一篇关于这个主题的博客文章


Mat*_*ell 10

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

<asp:Label ID="label1" runat="server" Text="Username" AssociatedControlID="Text1" />
<asp:TextBox ID="Text1" runat="server" />
Run Code Online (Sandbox Code Playgroud)


Bri*_*Kim 7

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

<asp:Label AssociatedControlID="Username" runat="server" Text="Username:"></asp:Label>
<asp:TextBox ID="Username" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

编辑:哇..一分钟内所有相同的答案.=)