2010-07-22 53 views
87

我只是想听到一些权威人士应该在何时何地使用LITERAL来控制LABELASP.Net:文字与标签

据我所知,区别在于:A LABEL可以通过添加的<SPAN>标签进行样式设置。

我个人发现在我的HTML中添加<SPAN>标签很烦人,从来没有实际上通过ASP应用样式,所以LITERAL似乎是大多数时候应该使用的东西......但我担心有其他考虑或使用标签,我不知道的好处。

如果我们没有对它们应用样式,用LITERAL代替LABEL s是否100%正常?有没有其他的考虑?

回答

114

是的,主要的区别在于Literal控制只是呈现出文本,但Label控制围绕着它与<span>标签(除非您使用AssociatedControlID属性,在这种情况下Label控制将呈现<label>标签)。

因此,标签的样式可以更容易,但如果您只是插入文本,文字是要走的路。文字控件还有一个方便的属性Mode,它管理文本的呈现方式。您可以将其设置为HTML编码,或者不进行任何更改而渲染,或者删除任何“不支持的标记语言元素”。

如果你未施加任何样式(例如,通过使用LabelCssClass属性),这将是罚款与Literal控制来代替Label控制。

+1

那么,为了确保在这里,根本没有其他的考虑?我问,因为你写的“主要区别是......”。显然我对主要区别不感兴趣。谢谢。 – 2010-07-22 13:58:11

+2

@Django:Chris Marisic的回答非常重要。 ASP.Net当你想要一个HTML'

+0

太棒了!这也解释了为什么它也被称为标签。非常感谢! – 2010-07-22 14:10:10

32

当你有类似

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

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

这是最佳的使用标签元素,因为它会正确使用正确的for属性把它变成一个HTML label元素瞄准你的文本框,代码,这样,如果一个用户点击标签时会自动将其光标置于文本框内。

否则使用文字,除非文字包装在span将有利于CSS样式。

+1

我还没有意识到的另一个重要提示。谢谢! – 2010-07-22 13:43:30

+2

是的,这是我自己使用标签的主要原因,提供了一些更好的用户体验。 – 2010-07-22 14:14:32

+2

当然。我一直想知道如何在ASP.Net中复制这一点HTML。我很高兴终于明白了。 – 2010-07-22 14:17:07

12

enter image description here

显示简单的文本,格式化文本或HTML文本,因为它是我将开始与字面第一次作为其重量轻,不排放出额外的SPAN标记。

请参阅this video其中演示有关这些额外的标记。

但是我们不能将CSS应用于文字,我们不能将像Label1.Attributes.Add这样的属性添加到文字上。任何容器导向的东西都不能实现,因为字面不被SPAN标签包围。

看到很多ASP.NET Webform人默认选择标签来显示文本,但不知道它会生成额外的SPAN标签,如果您有很多标签可能会使您的HTML变得沉重,这也令人伤心。

1

差B/w的标签和文字控制在asp.net

在几乎所有的方式一个字面控制是一样的一个标签控制。这两个控件都用于在Web窗体上显示文本。 (Text属性可以在HTML或代码隐藏中设置。)

最大的区别在于,Label控件在渲染时将文本包装在span中。任何应用于Label控件的样式都将使用spanstyle属性进行渲染。

例如,下面的HTML

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

将呈现为

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

文字控制不显示不输出任何周围的标记,所以文本作为是:

例如,以下HTML

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

将呈现为

Literal Control Text

所以,如果你想要的任何样式应用到比使用Label控件,否则使用文字控制。正因为如此,与Label控件相比,Literal控件是一个轻量级控件。

供参考:继承层次结构对于立即控制类是(对象=>控制=>文字),其中作为标签控制,层级是(对象=>控制=>的WebControl =>标签)