ASP.Net:文字与标签

时间:2010-07-22 13:35:17

标签: c# asp.net html controls

我只是想听听一些关于你应该LITERAL使用LABEL控制LABEL的时间和地点的权威。

据我了解,区别在于:<SPAN>可以通过添加的<SPAN>标记设置样式。

我个人发现在我的HTML中添加LITERAL标签非常烦人,并且从未通过ASP实际应用样式,因此LABEL似乎应该是大多数时候应该使用的。 ..但我担心在我不知道的情况下使用LABEL会有其他的注意事项或好处。

如果我们没有为它们应用样式,用LITERAL替换任何{{1}}是否100%罚款?没有其他考虑因素吗?

4 个答案:

答案 0 :(得分:122)

是的,主要区别在于Literal控件只显示文本,但Label控件用<span>标记围绕它(除非您使用AssociatedControlID属性,在哪种情况下,Label控件将呈现<label>标记。

因此,标签的样式可以更容易,但如果您只是插入文本,那么文字是可行的。文字控件还有一个方便的属性Mode,它控制文本的呈现方式。您可以对其进行HTML编码,或者在没有任何更改的情况下进行渲染,或者删除任何“不支持的标记语言元素”。

如果您没有应用任何样式(例如,使用Label的{​​{1}}属性),则可以使用CssClass控件替换Label控件。

答案 1 :(得分:33)

当你有类似

的代码时
<asp:Label EnableViewState="false" ID="Label8" runat="server" 
        AssociatedControlID="txtEmail">Email Address:</asp:Label>

<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

最好使用标签元素,因为它会将其正确地转换为html label元素,并使用正确的for属性定位您的文本框,这样,如果用户点击标签,自动将光标设置在文本字段中。

否则使用文字,除非文本包含在span中对css样式有益。

答案 2 :(得分:19)

enter image description here

要显示简单文本,格式化文本或HTML文本,我将首先从文字开始,因为它的轻量级并且不会发出额外的SPAN标记。

请参阅this video,其中展示了这些额外标签。

但是我们不能在文字上应用CSS,我们不能将Label1.Attributes.Add等属性添加到文字中。任何面向容器的东西都无法实现,因为文字没有被SPAN标签包围。

这也是可悲的,默认情况下看到很多ASP.NET网络表单的球员选择标签显示不知道文本,它产生额外的SPAN标签,它可以使你的HTML沉重,如果你有标签的很多的。

答案 3 :(得分:2)

asp.net中的区别标签和文字控制

几乎在所有方面,Literal控件都与Label控件相同。这两个控件都用于在webform上显示Text。 (可以在HTML或代码隐藏中设置Text属性。)

最大的区别在于Label控件在渲染时将文本包装在span中。应用于Label控件的任何样式都将使用style的{​​{1}}属性进行呈现。

例如,以下HTML

span

将呈现为

<asp:Label ID="Label1" runat="server" Text="Label Text" ForeColor="Red" Font-Bold="true" ></asp:Label>

Literal控件不输出任何周围的标签,因此Text显示为:

例如,以下HTML

<span id="Label1" style="color:Red;font-weight:bold;">Label Text</span>

将呈现为

<asp:Literal ID="Literal1" runat="server" Text="Literal Control Text"></asp:Literal>

因此,如果要将任何样式应用于使用Label控件,否则请使用Literal控件。因此,与Label控件相比,Literal控件是一个轻量级控件。

FYI:Literal控件类的继承层次结构为(Object =&gt; Control =&gt; Literal),其中对于Label控件,层次结构为(Object =&gt; Control =&gt; WebControl =&gt;标签)