代码之家  ›  专栏  ›  技术社区  ›  Chuck Le Butt

ASP.NET:文本与标签

  •  95
  • Chuck Le Butt  · 技术社区  · 16 年前

    我只是想听听有关何时何地使用 LITERAL 对A的控制 LABEL .

    据我所知,区别在于: 标签 可以通过 <SPAN> 添加的标记。

    我个人发现 <SPAN & GT; 我的HTML中的标记非常烦人,而且从未通过ASP应用样式,等等 字面意义的 S似乎是大多数时候应该使用的东西…但我担心 其他 我不知道在上面贴标签的注意事项或好处。

    100%可以换吗 标签 带着 字面意义的 S,如果我们不应用样式的话?是否没有其他考虑?

    4 回复  |  直到 7 年前
        1
  •  120
  •   Graham Clark    14 年前

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

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

    如果您没有应用任何样式(例如 标签 CssClass 属性),可以更换 标签 控件与 字面意义的 控制。

        2
  •  33
  •   AakashM    14 年前

    当你有类似的代码

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

    最好使用label元素,因为它可以正确地将其转换为HTML label 元素具有正确的 for 以文本框为目标的属性,这样,如果用户单击标签,它会自动在文本字段中设置其光标。

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

        3
  •  17
  •   Stacked Emily M    9 年前

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

    请参见 此视频 which shows about these extra tags.

    但是我们不能在文本上应用CSS,不能向文本添加label1.attributes.add之类的属性。任何面向容器的东西都无法实现,因为文本没有被SPAN标记包围。

    同样令人遗憾的是,在默认情况下,很多ASP.NET WebForm用户选择Label来显示不知道它会生成额外的跨距标记的文本,如果您有很多的Label,这些标记会使您的HTML变得沉重。

    为了显示简单的文本、格式化的文本或HTML文本,我将首先从literal开始,因为它是轻量级的,不会发出额外的跨度标记。

    this video 它演示了这些额外的标记。

    但是我们不能在文本上应用CSS,不能向文本添加label1.attributes.add之类的属性。任何面向容器的东西都不能实现,因为文本没有被一个SPAN标记包围。

    同样令人遗憾的是,在默认情况下,很多ASP.NET WebForm用户选择Label来显示不知道它会生成额外的跨距标记的文本,如果标签太多,这些标记会使HTML变得沉重。

        4
  •  2
  •   Chuck Le Butt    10 年前

    ASP.NET中的不同b/w标签和文本控件

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

    最大的区别是Label控件将文本包装在 span 渲染时。应用于标签控件的任何样式都将使用 style 性质 跨度 .

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

    因此,如果要将任何样式应用于than-use标签控件,请使用literal控件。因此,与label控件相比,literal控件是一个轻量级控件。

    仅供参考:文本控件类的继承层次结构为 (对象=>控件=>文本) ,其中对于标签控件,层次结构为 (对象=>控件=>WebControl=>标签)