<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lable on 冯威的博客</title><link>https://fwhyy.com/tags/lable/</link><description>Recent content in Lable on 冯威的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Sat, 23 Jan 2010 00:00:00 +0800</lastBuildDate><atom:link href="https://fwhyy.com/tags/lable/atom.xml" rel="self" type="application/rss+xml"/><item><title>Lable和Literal控件的使用和区别</title><link>https://fwhyy.com/2010/01/the-use-of-the-lable-and-literal-controls-and-differences/</link><pubDate>Sat, 23 Jan 2010 00:00:00 +0800</pubDate><guid>https://fwhyy.com/2010/01/the-use-of-the-lable-and-literal-controls-and-differences/</guid><description>&lt;p&gt;Lable和Literal这两个控件是我们非常熟悉的两个控件，都是用作内容呈现用的，但他们之间也有不同之处，分别应用于不同的地方。Lable控件会将内容呈现在html标签span中，即Lable控件的Text属性的值会包含在&lt;span&gt;标签中。而Literal控件生成的代码则比较干净，它的Text属性的值将直接显示在页面中，看下面两段代码：&lt;/p&gt;
&lt;p&gt;Lable：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;asp:Label ID=&amp;#34;lblUserName&amp;#34; runat=&amp;#34;server&amp;#34; Text=&amp;#34;用户名&amp;#34;&amp;gt;&amp;lt;/asp:Label&amp;gt;
&amp;lt;asp:TextBox ID=&amp;#34;txtUserName&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;asp:Label ID=&amp;#34;lblPwd&amp;#34; runat=&amp;#34;server&amp;#34; Text=&amp;#34;密码&amp;#34;&amp;gt;&amp;lt;/asp:Label&amp;gt;
&amp;lt;asp:TextBox ID=&amp;#34;txtPwd&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Literal：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;asp:Literal runat=&amp;#34;server&amp;#34; ID=&amp;#34;litUserName&amp;#34; Text=&amp;#34;用户名&amp;#34;&amp;gt;&amp;lt;/asp:Literal&amp;gt;
&amp;lt;asp:TextBox ID=&amp;#34;txtUserName1&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;asp:Literal runat=&amp;#34;server&amp;#34; ID=&amp;#34;litPwd&amp;#34; Text=&amp;#34;密码&amp;#34;&amp;gt;&amp;lt;/asp:Literal&amp;gt;
&amp;lt;asp:TextBox ID=&amp;#34;txtPwd1&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;上面两段程序运行的结果都如下图：&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.fwhyy.com/2022/202201302120262.webp" alt="2010-12-29_1138351" loading="lazy" decoding="async"&gt;
&lt;/p&gt;
&lt;p&gt;再来看看上面的代码生成的源码：&lt;/p&gt;
&lt;p&gt;Lable&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;span id=&amp;#34;lblUserName&amp;#34;&amp;gt;用户名&amp;lt;/span&amp;gt;
&amp;lt;input name=&amp;#34;txtUserName&amp;#34; type=&amp;#34;text&amp;#34; id=&amp;#34;txtUserName&amp;#34; /&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;span id=&amp;#34;lblPwd&amp;#34;&amp;gt;密码&amp;lt;/span&amp;gt;
&amp;lt;input name=&amp;#34;txtPwd&amp;#34; type=&amp;#34;text&amp;#34; id=&amp;#34;txtPwd&amp;#34; /&amp;gt;&amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Literal&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;用户名
&amp;lt;input name=&amp;#34;txtUserName1&amp;#34; type=&amp;#34;text&amp;#34; id=&amp;#34;txtUserName1&amp;#34; /&amp;gt;&amp;lt;br /&amp;gt;
密码
&amp;lt;input name=&amp;#34;txtPwd1&amp;#34; type=&amp;#34;text&amp;#34; id=&amp;#34;txtPwd1&amp;#34; /&amp;gt;&amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;从源码中可以很清楚看出Lable最终在客户端会生成Span标签，而Literal则直接显示文本，记得曾经维护过的一个自定义控件，在不同留言器中有样式问题，调试很久最终发现就是Lable生成的Span惹的祸，最终换成Literal得以解决，所以后来但凡要显示文本的地方我基本都是用Literal。不过Lable也不是一无是处，Lable控件有一个AssociatedControlID，可以将该属性指向一个表单控件的ID，通常为TextBox，看下面代码：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;asp:Label ID=&amp;#34;lblUserName&amp;#34; runat=&amp;#34;server&amp;#34; AssociatedControlID=&amp;#34;txtUserName&amp;#34; Text=&amp;#34;用户名&amp;#34;&amp;gt;&amp;lt;/asp:Label&amp;gt;
&amp;lt;asp:TextBox ID=&amp;#34;txtUserName&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;asp:Label ID=&amp;#34;lblPwd&amp;#34; runat=&amp;#34;server&amp;#34; AssociatedControlID=&amp;#34;txtPwd&amp;#34; Text=&amp;#34;密码&amp;#34;&amp;gt;&amp;lt;/asp:Label&amp;gt;
&amp;lt;asp:TextBox ID=&amp;#34;txtPwd&amp;#34; runat=&amp;#34;server&amp;#34;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;和上面的代码基本一样只是添加了AssociatedControlID属性，分别指向了两个TextBox控件的ID，添加了这个属性后生成的源码就变了，如下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;label for=&amp;#34;txtUserName&amp;#34; id=&amp;#34;lblUserName&amp;#34;&amp;gt;用户名&amp;lt;/label&amp;gt;
&amp;lt;input name=&amp;#34;txtUserName&amp;#34; type=&amp;#34;text&amp;#34; id=&amp;#34;txtUserName&amp;#34; /&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;label for=&amp;#34;txtPwd&amp;#34; id=&amp;#34;lblPwd&amp;#34;&amp;gt;密码&amp;lt;/label&amp;gt;
&amp;lt;input name=&amp;#34;txtPwd&amp;#34; type=&amp;#34;text&amp;#34; id=&amp;#34;txtPwd&amp;#34; /&amp;gt;&amp;lt;br /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以看出有Span标签变成了lable标签 for属性指向了TextBox的id。AssociatedControlID属性的使用能够给残障人士带来方便，如果使用读屏器之类的辅助设备来和网站进行交互，AssociatedControlID属性能帮助辅助设备将标签和字段关联起来。除此之外还有一个好处就是当点击标签时，所关联的TextBox就会获得焦点。&lt;/p&gt;
&lt;p&gt;由于Lable控件的内容最终呈现在Span标签中，所以Lable控件也支持Span标签的一些属性，如BackColor，CssClass等。Literal控件不生成Span标签，当然也不支持那些属性，不过Literal控件有个Mode属性，该属性有三个值&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encode ：在编码Html内容后再显示控件的内容&lt;/li&gt;
&lt;li&gt;PassThrough ：显示控件的内容不进行编码&lt;/li&gt;
&lt;li&gt;Transform ：清除一些不支持的标记后在呈现内容&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;看下面的代码：&lt;/p&gt;</description></item></channel></rss>