ASP.NET技巧-正确使用Label控件

来源:互联网 发布:学满语的软件 编辑:程序博客网 时间:2024/06/09 20:17

ASP.NET技巧-正确使用Label控件

原文地址:

http://haacked.com/archive/2007/02/15/ASP.NET_Tip_-_Use_The_Label_Control_Correctly.aspx

Scott Watermasysk 在他的博客上有一系列的 Quick Tips for ASP.NET 。这仅仅是其中的一篇。我非常期待能够看到这个系列的后续文章。

然而,关于Never use the ASP.NET Label control,我的看法稍稍与他不同。我希望将其重写为:

Never use the ASP.NET Label control when a Literal would do.

问题不是Label控件。问题是只是仅仅把Label控件看成是Literal控件。

Label控件有一个特殊用法,作为表单输入的标签。例如,下面的图片中有一个文本标签和一个文本框。

让我们看看如何使用Literal控件来创建这个简单的表单(注意我从一个资源文件中获取值,因为我们都希望支持国际化,对吧?但是这也指出了我为什么使用一个实际的控件而不只是直接输入标签)。

<asp:Literal id="label" Text="<%$ Resources:UserName %>"
 
runat="server" /> <asp:TextBox id="textbox" runat="server"/>

当你点击Username上的单词时发生了什么?什么也没有发生。如果此时靠近literalTextbox得到焦点是不是非常好呢?下面是解决方法:

<asp:Label id="label" AssociatedControlId="textbox" 
    Text="Username" runat="server" /> <asp:TextBox id="textbox" runat="server" />

现在,我们已经将label和文本控件关联在一起。底层的HTML看起来就像这样(为了讨论而做了简化):

<label for="textbox">Username</label> <input type="textbox" name="textbox" value="" />

这将标签Username和文本控件关联起来,因此当我们点击标签时,文本框就会获得焦点。

那么在这里为什么使用Label服务器控件?为什么不直接使用<label /> html标签。

因为你不知道TextBox编译时的客户端id。那么如果这两个控件位于一个页面内部的用户控件内部,又会发生什么呢?此时它们的ID会变得有点奇怪。

后记:

在关于这篇文章的评论中也有非常精彩的讨论,我也摘录了下来。

实际上,你也可以将label和任何其他类型的控件关联起来,而不仅仅是textboxDropdowntext area也是如此。

Label另外两个非常重要的属性是AccessKeyTooltip,它们主要是为了便于访问Label

而且你也可以使用checkbox控件的text属性,这样它将自动生成一个关联label

 

 
原创粉丝点击