如何在ASP中使用<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>

正确的方法是什么?

推荐答案

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

Asp.net相关问答推荐

页面刷新后如何存储JS Select 数据

缓存httpmessage内容

检测 ASP.NET 中的内存泄漏

C# ASP.NET Core Serilog 添加类名和方法到日志(log)

RestSharp 获取请求的完整 URL

如何以编程方式获取会话 cookie 名称?

无法从 App_code 文件夹中找到类型或命名空间

这两种方法有什么区别?

在 ASP.NET Core 1.0 上处理大文件上传

当用户使表单无效时单击取消按钮时,如何清除 MVC 客户端验证错误?

单独装配和路由中的控制器

<%# Eval("State") %> 或 <%# DataBinder.Eval(Container.DataItem, "state")%>

这个rendersection的代码是什么意思?

如何从 NuGet 安装 EntityFramework 5.0(和其他旧版本)?

错误请求 - 无效的主机名 ASP.net Visual Studio 2015

如何在 .NET Core 中实现 DbContext 连接字符串?

使用 ConfigurationManager.RefreshSection 重新加载配置而不重新启动应用程序

我可以在加载事件时从 C# 的 div 标记中动态添加 HTML 吗?

在 Visual Studio 2012 中调试 .NET Framework 源代码?

如何在asp.net的GridView中按列名而不是按索引获取单元格值