asp:label和HTML label有什么区别?

3
什么是asp:label和html label之间的区别?
我知道第一个是在服务器上渲染的,因此它基本上返回一个标签,但它的用途是什么?在什么情况下会使用HTML标签,在什么情况下会使用asp:label?我知道如果将其作为ASP控件放置,我可以以编程方式访问它,但在纯粹的UI设计方面两者之间有什么区别?

2
一个好的帖子来想象差异。https://dev59.com/b1nUa4cB1Zd3GeqPcaRs - Muhammad Hani
如果asp:label具有AssociatedControlID,则会呈现为标签。 - ScottE
1个回答

9
如果asp:Label的"AssociatedControlID"属性值设置为页面上表单控件的ID,则在呈现给客户端时,它实际上将呈现为HTML标签控件("for"值设置为相同控件的客户端ID)。
HTML标签控件严格设计为为表单控件(即输入、选择或文本区域)提供标签/标题,以描述表单控件的用途(请参阅https://developer.mozilla.org/en-US/docs/HTML/Element/label)。标签通常使用"for"属性与特定输入强烈关联,该属性应为输入的ID。对于那些无法仅通过文本和控件的接近程度来解释关系的无障碍需求者来说,这特别有用。想象一下一个带有几个文本框但没有办法知道每个文本框所需输入的表单。HTML标签控件不用于此上下文之外的一般文本。
如果 asp:Label 的 "AssociatedControlID" 属性没有值,则该控件将被渲染为一个包含文本的 span 控件。一些开发者喜欢使用 asp:Labels 来输出文本到页面上,使该控件具有双重用途(与 HTML 对应物不同)。我个人更喜欢使用 asp:Literals 来实现此目的,因为它可以让我更好地控制所包含的标记。
选择 asp:Label 而不是原生的 HTML label 控件的原因是,您可以轻松地使用服务器端代码与之交互,例如在响应服务器事件时更改文本或 CssClasses,并且您可以将服务器 ID 输入为 "AssociatedControlID" 值,该值将自动在客户端中呈现为客户端 ID(例如显示为 "ct100_MainContent_TextBox1" 而不是 "TextBox1")的 "for" 值。

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