这些核心的 ASP.NET控件包括信息显示控件( Label和 Literal)、用户输入控件( TextBox、 CheckBox和 RadioButton)、按钮控件( Button、 LinkButton和 ImageButton)、对表单字段进行分组的 Panel控件以及 Hyperlink链接控件。
信息显示控件
如果需要动态在页面中显示文本可以使用 Label控件。Label控件默认地把内容呈现在HTML页面的<span>标签中。赋值给Label的Text属性的任何值(字符串)都会显示在<span>标签中,就如同<span>Text</span>。因此,你完全可以通过CSS样式来处理这些Text内容。当然,Label本身具备大量的Font、BackColor等处理内容样式的属性,但是这不建议使用(简言之,就是累赘)。值得提醒的是,Label还具备一个很重要也很有特色的属性 AssociatedControlID属性。为Label控件提供AssociatedControlID属性之后,Label控件呈现的是AssociatedControlID属性值所对应的控件。 AssociatedControlID属性还有一个好处是,当点击标签时,会自动把表单焦点设置为关联的表单输入框。通过理解如下代码,可以更深刻会意上文所述。
<%@ Page Language="C#" %>
<!DOCTYPE HTML>
<HTML>
<HEAD>
<META CHARSET="UTF-8" />
<TITLE>Label控件</TITLE>
<STYLE TYPE="TEXT/CSS">
<!--
DIV{PADDING:10PX;}
.labelStyle{COLOR:RED;BACKGROUND-COLOR:YELLOW;
BORDER:SOLID 2PX RED;}
-->
</STYLE>
</HEAD>
<BODY>
<FORM ID="MainForm" RUNAT="SERVER">
<!-- Label控件的样式表现 -->
<DIV>
<ASP:Label ID="lblSecond" TEXT="SECOND LABEL"
CSSCLASS="labelStyle" RUNAT="SERVER" />
<HR STYLE="WEIGHT:100%;HEIGHT:4PX;BACKGROUND-COLOR:GREEN;" />
<ASP:Label ID="lblFirst" TEXT="FIRST LABEL"
FORECOLOR="RED" BACKCOLOR="YELLOW"
BORDERSTYLE="SOLID" BORDERWIDTH="2"
BORDERCOLOR="RED" RUNAT="SERVER" />
</DIV>
<!-- 但点击"HELLO DABBY"时,焦点马上对应到TextBox中 -->
<DIV>
<ASP:Label ID="LABEL" TEXT="HELLO DABBY"
ASSOCIATEDCONTROLID="TEXTBOX" RUNAT="SERVER" />
<ASP:TextBox ID="TEXTBOX" RUNAT="SERVER" />
</DIV>
</FORM>
</BODY>
</HTML>
在IIS服务器查看之后,你会发现利用CSS实现的样式和利用控件属性实现的样式围观上完全相同,不过细节上还是有区别的。读者可以利用分别选定文本,马上就会出现区别(在IE10中)。点击
"HELLO DABBY"你会发现游标出现在TextBox控件中,等待您的输入,这就是AssociatedControlID属性的特点。
Literal控件主要用于在浏览器中显示文本或者HTML内容。但是,Literal控件的局限性特别大,她不把内容呈现在任何HTML标签中,即内容不会像Label控件一样包含在 <span>标签中,无法采用CSS样式来处理。 Literal控件只支持Label控件不具备的一个属性Mode属性。Mode属性用于编码HTML内容,仅仅接受 PassThrough、Encode和Transform三个值。
查看下面的代码段,Literal控件的Mode属性分别采取不同的值。
<%@ Page Language="C#" %>
<HTML>
<HEAD></HEAD>
<BODY>
<FORM ID="MainForm" RUNAT="SERVER">
<DIV>
<ASP:Literal ID="LTLONE" MODE="PassThrough"
TEXT="<STRONG>love me</STRONG>"
RUNAT="SERVER" /> <br />
<ASP:Literal ID="LTLTWO" MODE="Encode"
TEXT="<STRONG>love me</STRONG>"
RUNAT="SERVER" /> <br />
<ASP:Literal ID="LTLTHREE" MODE="Transform"
TEXT="<STRONG>love me</STRONG>"
RUNAT="SERVER" />
<DIV>
</FORM>
</BODY>
</HTMl>
从在IIS服务器中执行结果看,PassThrough值可执行Text内容中HTML标签,而Encode值不会执行Text内容中的HTML标签,对HTML标签直接显示。至于Transform值,貌似是PassThrough值得效果相同?其实,由于在主流的浏览器中都支持 <STRONG>标签,如果在不支持 <STRONG>标签的浏览器中,会直接删除点该标签的内容,不显示。在某些移动平台(如旧式的智能手机)不支持 <STRONG>标签的话,Mode为Transform值的话,"love me"是不会加粗显示的。
注意:Label、Literal等以及下面介绍的控件所涉及到的属性,本篇文章不会详细地每个都列举出来介绍。一般是记住了解一些常用的就可以了,要是遇到陌生的属性可以到微软官方的MSDN网站(http://msdn.microsoft.com/library/)查询理解。
ASP.NET博主也处在自学阶段,参考的主要书籍是 Nate Dudek、Stephen Walther等著的 《ASP.NET 4 UNLEASHED》。本篇博客主要介绍了Label和Literal两个信息显示控件,在下篇博客中将会涉及到TextBox、CheckBox和RadioButton三个关于用户输入的控件。
本文系个人的学习笔记,转载时保留本文链接:http://blog.iliyang.cn/