ASP.Net:文字与标签


102

我只是想听听您在何时何地应使用某个LITERAL控件上的某些权限LABEL

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

我个人发现<SPAN>在HTML中添加标记非常烦人,并且从未通过ASP实际应用样式,因此LITERALs似乎通常是大多数情况下应该使用的方式...但是我担心还有其他考虑因素或好处在我不知道的地方使用标签。

如果我们不对它们应用样式,LABELLITERALs 替换任何s 是否100%罚款?没有其他考虑吗?

Answers:


126

是的,主要区别是Literal控件仅呈现文本,但Label控件用<span>标签将其包围(除非您使用该AssociatedControlID属性,否则Label控件将呈现<label>标签)。

因此,标签的样式可以更容易,但是如果您只是插入文本,则可以使用文字。文字控件还具有一个方便的属性Mode,可控制文本的呈现方式。您可以对其进行HTML编码,也可以对其进行呈现而无需进行任何更改,也可以删除任何“不受支持的标记语言元素”。

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


1
因此,只是为了确保在这里没有其他考虑?我问是因为你写的“主要区别是……”。显然,我对主要区别不感兴趣。谢谢。
Chuck Le Butt,2010年

2
@Django:克里斯·马里西奇的答案非常重要;Label当您需要HTML <label>元素时,应始终使用ASP.Net 控件。除此之外,Labels可以在之间渲染文本<spans>,而Literals则不能,而Literals可以更好地控制文本的渲染方式。这两个控件上都没有特殊事件,并且它们的内容可以通过完全相同的方式(通过Text属性)在代码隐藏中进行访问。
格雷厄姆·克拉克

2
复选框!无线电按钮!如果使用Label控件,则可AssociatedControlID以为属性添加标签所关联的复选框或单选按钮的ID。这样,您可以单击标签,关联的控件将被激活。增大可单击目标区域的范围也将使用户界面更易于使用。
哈里·佩科宁

34

当你有类似的代码

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

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

最好使用label元素,因为它将正确地将其变成具有针对您的文本框label的正确for属性的html 元素,这样,如果用户单击标签,它将自动将其光标设置在文本字段内。

否则,请使用文字,除非使用a span换行,这对css样式很有帮助。


19

在此处输入图片说明

要显示简单的文本,带格式的文本或HTML文本,我将首先使用文字,因为它是轻量级的,并且不会发出多余的SPAN标签。

观看此视频,演示有关这些额外标签的信息。

但是我们不能在文字上应用CSS,也不能在文字上添加Label1.Attributes.Add之类的属性。任何面向容器的事情都无法实现,因为文字没有被SPAN标记包围。

这也是痛心地看到很多ASP.NET网络表单家伙的默认选择标签显示的文本不知道它会产生额外的SPAN标签,它可以使你的HTML沉重,如果你有很多的标签。


3

asp.net中的黑白标签和文字控制

在几乎所有方面,文字控件都与标签控件相同。这两个控件都用于在Web窗体上显示文本。(可以在HTML或后面的代码中设置Text属性。)

最大的区别在于,Label控件span在呈现时将文本换行。应用于Label控件的任何样式都将使用的style属性呈现span

例如,以下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>

Literal控件不会输出任何周围的标签,因此文本按原样显示:

例如,以下HTML

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

将呈现为

Literal Control Text

因此,如果您想将任何样式应用于而不是使用Label控件,则使用Literal控件。因此,与标签控件相比,文字控件是一种轻型控件。

仅供参考:Literal控件类的继承层次结构是(Object => Control => Literal),其中对于Label控件,层次结构是(Object => Control => WebControl => Label)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.