asp:label
和html label
之间有什么区别?
我知道第一个是在服务器上呈现的,所以基本上它会返回一个span选项卡,但它的用途是什么?有人想要使用HTML标记的情况是什么?想要使用asp:label
的是什么?我知道,如果我把它作为ASP控件,我可以以编程方式访问它,但两者之间的差异纯粹是在设计UI方面吗?
答案 0 :(得分:8)
如果asp:Label的“AssociatedControlID”属性值设置为页面上表单控件的ID,那么它实际上将呈现为HTML标签控件(“for”值设置为客户端ID当呈现给客户时,同样的控制。
HTML标签控件严格设计用于为表单控件(即输入,选择或文本区域)提供标签/标题 ,其向用户描述表单控件的用途(请参阅{ {3}})。标签通常(强烈地)使用“for”属性与特定输入相关联,该属性应该是输入的ID。这对于那些无法根据文本和控件的接近度无法解释关系的可访问性需求特别有用。想象一个包含多个文本框的表单,但无法知道每个文本框中需要哪个输入。 HTML标签控件不用于此上下文之外的常规文本。
如果asp:Label的“AssociatedControlID”属性没有值,则控件将简单地呈现为包含文本的span控件。一些开发人员喜欢使用asp:Labels将文本输出到页面上,使控件具有双重目的(与HTML对应物不同)。我个人更喜欢使用asp:Literals来实现这个目的,因为它让我可以更好地控制包含标记。
选择asp:Label而不是原生HTML标签控件的原因是您可以使用服务器端代码轻松地与其进行交互,例如更改文本或CssClasses以响应服务器事件,您可以输入服务器ID作为“AssociatedControlID”值,它将在客户端的“for”值中自动呈现为客户端ID(例如,显示为“ct100_MainContent_TextBox1”而不是“TextBox1”)。