ASP.NET学习笔记|标准控件[1]

      前言:本篇学习笔记主要讲述的是 ASP.NET的几个核心控件。这些控件几乎都是 ASP.NET应用程序都涉及到的。首先,要说明的是这些控件是不能完全替代HTML页面的标签的;如果利用HTML标签以及JAVASCRIPT等脚本语言能解决的,尽量不要使用 ASP.NET控件;最终的目的很简单,就是减轻服务器的负担,使网页加载的速度更快。
      这些核心的 ASP.NET控件包括信息显示控件( LabelLiteral)、用户输入控件( TextBoxCheckBoxRadioButton)、按钮控件( ButtonLinkButtonImageButton)、对表单字段进行分组的 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/

转载于:https://my.oschina.net/sunshinedabby/blog/76955

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值