ASP.NET学习系列(四)开始控件之旅之Literal和Label

本文详细对比了ASP.NET中的Label与Literal控件,包括它们在网页上的呈现方式、各自支持的属性特点及应用场景,如Label的格式化能力和关联表单字段的功能,以及Literal在HTML标签处理方面的特性。

      Label和Literal两个控件都用于运行时状态页面文本的显示,要显示的内容在控件的Text属性中设置。

代码:

        <asp:Literal ID="Literal1" runat="server" Text="I'm a literal."/>
        
        
<asp:Label ID="label1" runat="server" Text="I'm a label." />

 

      那么,同样是显示文本信息,为什么要有两个控件那,这两个控件又有什么区别那?可以先来做一个简单的实验。创建一个包含label和Literal的页面,并查看在客户端生成的代码。

 

    <div>
        I
'm a literal.     
        <span id="label1">I'm a label.</span>
    </div> 

 

这是和连个控件相关的部分。由此可以看到,Label控件的内容被呈现在一个HTML的<span>标签中,而Literal则是直接显示的文本,没有被任何标签包含。
    那么<span>标签有什么好处那,它可以允许你控制Label控件中的文本格式,因此,Label控件中拥有一些格式化自身文本的属性,例如:Backcolor、BorderColor、BorderStyle、BorderWidth、CssClass、Font、ForeColor、Style、ToolTip等属性。而这些属性Literal都没有。通常情况下,建议避免使用格式化属性而是用CSS来格式化Label控件的输出内容。
一个简单的示例:

 

ExpandedBlockStart.gif代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"> 
    
<style type="text/css">
        div
        
{
            padding
:12px;
        
}
        .labelStyle
        
{
            color
:Yellow;
            background-color
:Silver;
            border
: Solid 3px Yellow;
            
}
    
</style>
    
<title></title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:Label ID="Label1" runat="server" Text="Label"
         CssClass
="labelStyle"></asp:Label>
    
</div>
    
</form>
</body>
</html>

 

     使用Label标签的另一个用处是可以用它来标注一个HTML表单字段。Label控件拥有属性AssociatedControlID,可以设置此属性来指向表示表单字段的控件。
一个简单的示例:

 

ExpandedBlockStart.gif代码
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:Label ID="Label1" runat="server" Text="lblName"
          AssociatedControlID
="txtName"></asp:Label>
        
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
    
</div>
    
</form>
</body>

 

查看客户端源码可以看到,在设置了AssociatedControlID属性后,Label控件将呈现成HTML中的<label>标签而不再是<span>标签。

 

ExpandedBlockStart.gif代码
<body>
    
<form name="form1" method="post" action="LabelDemo.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE3OTIzNjY1MThkZOUGW3uywF+ry+u9uxe/q+3vlktc" />
</div>

<div>

    
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKB3pzUBwLEhISFC6Ey/IdW6u1ZYxE73J7V9pdQ20qi" />
</div>
    
<div>
        
<label for="txtName" id="Label1">lblName</label>
        
<input name="txtName" type="text" id="txtName" />
    
</div>
    
</form>
</body>

 

    而Literal控件的作用之一是用来在<title>中是用,因为如果用Label的话,在客户端生成的代码时不符合XHTML规则的。Literal只支持一个Mode属性。Mode属性用于编码HTML中的内容。它接受下列三个值:
    PassThrough:显示控件中的内容而不进行任何编码。
    Encode:在编码HTML内容后在西安市控件的内容。
    Transform:在清除请求设备不支持的标记后在显示控件的内容。

示例:

 

ExpandedBlockStart.gif代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title></title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:Literal ID="Literal1" runat="server" Text="<hr />" 
         Mode
="PassThrough"></asp:Literal>
        
<br />
        
<br />
        
<asp:Literal ID="Literal2" runat="server" Text="<hr />" 
         Mode
="Encode"></asp:Literal>
        
<br />
        
<br />
        
<asp:Literal ID="Literal3" runat="server" Text="<hr />" 
         Mode
="Transform"></asp:Literal>
    
</div>
    
</form>
</body>
</html>

 

而显示的结果如下图:

可以看到,第一个Literal控件显示一条水平线,第二个显示一个未解释的标签,第三个也显示了一条水平线。但如果放在一个不能解释<hr >浏览器上,则第三行就不会显示,因为<hr>标签会被去掉。

转载于:https://www.cnblogs.com/yangqk/archive/2010/03/09/1681750.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值