2013-01-12 147 views
3

asp:label与html label有什么区别?asp:label和HTML标签有什么区别?

我知道第一个在服务器上呈现,所以基本上它返回一个跨度选项卡,但它的用途是什么?有人想要使用HTML标签,以及想要使用asp:label的情况是什么?我知道,如果我把它作为一个ASP控件,我可以以编程方式访问它,但纯粹在设计UI的过程中,两者之间有什么区别?

+2

一个好的交想象的差 [http://stackoverflow.com/questions/6839007/should-i-use-the-asplabel-tag][1] [1 ]:http://stackoverflow.com/questions/6839007/should-i-use-the-asplabel-tag – MuhammadHani

+0

一个asp:标签被渲染为一个标签,如果有一个AssociatedControlID – ScottE

回答

7

如果asp:Label将其“AssociatedControlID”属性值设置为页面上的表单控件的ID,那么它实际上将呈现为HTML标签控件(将“for”值设置为客户端ID当呈现给客户端时,它是相同的控件)。

的HTML标签控制被设计严格为提供一个标签/字幕表单控件(即输入,选择或文本域),其描述的形式控制的目的给用户(见https://developer.mozilla.org/en-US/docs/HTML/Element/label)。标签通常(强烈地)使用“for”属性与特定输入相关联,该属性应该是输入的ID。这对于那些有无障碍需求的人来说特别有用,他们无法仅仅靠文字和控制的接近度来解释关系。想象一下带有几个文本框的表单,但无法知道每个表单需要哪个输入。 HTML标签控件不用于此上下文以外的一般文本。

如果asp:Label的“AssociatedControlID”属性没有值,则控件将简单地呈现为包含文本的跨度控件。一些开发人员喜欢使用asp:Labels将文本输出到页面上,从而赋予控件双重用途(与HTML对应不同)。我个人更喜欢使用asp:Literals来达到这个目的,因为它可以让我更好地控制包含标记。

选择asp:Label而不是原生HTML标签控件的原因是,您可以使用服务器端代码轻松地与它进行交互,例如更改文本或CssClasses以响应服务器事件,并且您可以输入将服务器ID作为客户端的“for”值中的“AssociatedControlID”值自动呈现为客户端ID(例如,显示为“ct100_MainContent_TextBox1”而非“TextBox1”)。

相关问题