【发布时间】:2010-10-05 09:21:38
【问题描述】:
asp.net 中使用什么文字控件?它们和标签控件有什么区别?
【问题讨论】:
-
ASP.Net: Literal vs Label 的可能重复项
asp.net 中使用什么文字控件?它们和标签控件有什么区别?
【问题讨论】:
用于在页面上显示文本,显示的文本可以在运行时通过服务器端代码设置。
【讨论】:
它将按字面意思放置您在页面中放置的任何文本。您可以使用它来编写 html、JavaScript 或纯文本。
【讨论】:
主要区别在于 Label 控件将 span 标签添加到您设置的文本(属性)中,允许对其应用样式:
<span>My Label text</span>
文字控件允许您呈现任何类型的内容。您可以使用它来呈现脚本、hmtl 和任何其他类型的文档内容。它不会更改您在 Text 属性中提供的字符串。
注意:Label 控件也允许您直接呈现 HTML,但它会将所有文本放入前面提到的 span 标记中。因此,对于呈现较大的 HTML 部分,Literal 控件是可行的方法。
PS:在HTML中有一个<label>标签。如果您使用 Label 控件的 AssociatedControlId 属性,它将呈现为 HTML <label> (感谢 Ray 指出。)
例如:
<asp:Label runat="server" id="FirstNameLabel" AssociatedControlId="FirstNameTextBox">
Input First Name:
</asp:Label>
<asp:Textbox runat="server" id="FirstNameTextBox" />
将呈现为:
<label for="FirstNameTextbox" id="FirstNameLabel">Input first name:</label>
<input type="text" id="FirstNameTextbox" name="FirstNameTextBox" />
另请参阅 W3 学校的 here。
【讨论】:
标签控件还具有将标签与另一个控件相关联的 AssociatedControlId 属性。一个有用的例子是文本框控件。一旦将这些关联起来,屏幕阅读器就能够提供更好的结果。
另一个例子是带有标签的单选按钮允许您单击标签,如果设置了 AssociatedControlId 属性,单选按钮将选择。
【讨论】:
正如 splattne 所提到的,标签将其文本包含在一个跨度中,而文字只是一个占位符。但是,在假设 ASP.Net 控件将如何呈现时要小心。它可能取决于您使用的用户代理。例如,面板控件在 IE 中呈现为 div,但在 Firefox 中呈现为表格。
【讨论】:
还需要注意的一点是,如果您只是使用它来显示某些内容并且不需要格式化文本,请使用 Literal 控件。 ViewState 对于 Literal 与 Label 控件相比没有那么重,当您在使用 ViewState 的页面上有许多这样的控件时,它确实会增加您的页面大小。
我总是问自己,我需要应用自定义样式或格式吗?是的,使用标签。不,使用文字。
【讨论】:
【讨论】: