ASP.NET Label相当于HTML'for'属性

时间:2014-03-06 16:42:59

标签: html asp.net

我正在将使用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”。我应该用什么呢?或者,如果我跳过这些属性,它根本没关系?

3 个答案:

答案 0 :(得分:5)

使用AssociatedControlID

<asp:Label runat="server" CssClass="control-label" AssociatedControlID="txtField">Caption</asp:Label>
<asp:TextBox runat="server" ID=txtField" CssClass="form-control" />

来自MSDN documentation page

  

设置AssociatedControlID属性后,Label控件将呈现为HTML标签元素,并将for属性设置为关联控件的ID属性。您可以使用Label属性设置label元素的其他属性。例如,您可以使用Text和AccessKey属性为关联控件提供标题和热键。

顺便说一下,似乎许多人似乎认为忽略这些属性对现实是否会对某些用户产生深远影响没有影响;特别是有屏幕阅读器的用户。

屏幕阅读器使用标签上的for属性告诉用户在遇到表单控件时应该输入什么。因此,您不仅应该努力在Web应用程序中包含这些属性,还应该使标签的内容尽可能具有描述性。

答案 1 :(得分:1)

用于标签使用

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

自动生成文本框的名称。如果您希望预测名称使用ClientIDMode属性,例如值静态。

答案 2 :(得分:0)

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

'for'属性有什么影响?见here。它以较小的方式改变了标签的行为(因此,并不重要)。

'name'属性有什么影响?通常,这是至关重要的,因为它是识别客户端和服务器之间字段的主要方式。但是,如果ASP正在为您管理(并且它正在运行),您可能不需要它。

另一种方法是预测'name'属性将是什么,并将其放在标签的'for'属性中。