ASP.NET标签的等价HTML 'for'属性是什么?

7

我正在将使用Bootstrap 3的HTML代码转换为ASP.NET Web Form。Bootstrap 3类“form-group”具有带有“For”属性的

<div class="form-group">
    <label for="txtField" class="control-label">Caption:</lable>
    <input type="text" id="txtField" name="txtField" class="form-control" />
</div>

我将上述代码转换为控件形式,如下所示:

<div class="form-group">
    <asp:label class="control-label">Caption:></asp:lable>
    <asp:TextBox id="txtField" class="form-control" /asp:TextBox>
</div>

但是<asp:TextBox>没有"name"属性,<asp:Label>也没有"for"属性。我应该使用什么代替?或者如果我省略这些属性的话有关系吗?


asp:TextBox 的闭合标签中有错别字。 - mcsilvio
3个回答

11

使用 AssociatedControlID

<asp:Label runat="server" CssClass="control-label" AssociatedControlID="txtField">Caption</asp:Label>
<asp:TextBox runat="server" ID=txtField" CssClass="form-control" />
MSDN文档页面得知:
当设置了AssociatedControlID属性后,Label控件将呈现为HTML标签元素,其中for属性设置为关联控件的ID属性。您可以使用Label属性设置标签元素的其他属性。例如,您可以使用Text和AccessKey属性为关联控件提供标题和热键。
顺便说一下,许多人似乎认为省略这些属性不会对用户产生影响,但实际上,它可能会对某些用户产生深远影响,特别是使用屏幕阅读器的用户。
屏幕阅读器使用标签上的for属性告诉用户遇到表单控件时应输入什么。因此,您不仅应该在Web应用程序中包含这些属性,还应该尽可能使标签内容描述性强。

1
对于标签使用,请使用:

<asp:Label class="control-label" runat="server" AssociatedControlId="txtField">Caption:></asp:Label>

文本框的名称是au generated。如果您想使用预测的名称,请使用ClientIDMode属性,并将其值设置为静态。

0

一般来说,跳过这些属性会有影响。

“for”属性有什么效果?请参考这里。它会以微小的方式改变标签的行为(所以不是关键问题)。

“name”属性有什么效果?一般而言,这是关键的,因为它是在客户端和服务器之间识别字段的主要方式。然而,如果ASP正在为您管理这个(并且正常工作),您可能不需要它。

另一种方法是预先确定“name”属性将会是什么,并将其放入标签的“for”属性中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接