我只是想听听一些关于你应该LITERAL
使用LABEL
控制LABEL
的时间和地点的权威。
据我了解,区别在于:<SPAN>
可以通过添加的<SPAN>
标记设置样式。
我个人发现在我的HTML中添加LITERAL
标签非常烦人,并且从未通过ASP实际应用样式,因此LABEL
似乎应该是大多数时候应该使用的。 ..但我担心在我不知道的情况下使用LABEL会有其他的注意事项或好处。
如果我们没有为它们应用样式,用LITERAL
替换任何{{1}}是否100%罚款?没有其他考虑因素吗?
答案 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)
要显示简单文本,格式化文本或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;标签)