第十八讲 Web服务器控件使用

*摘要
。Web服务器控件概述
。输入验证控件的使用
。服务器控件中的客户端功能
。IE Web Control的使用
。服务器日期控件的编写

1、Web控件
1.1概述:
。ASP.NET的精华
。位于System.Web.UI.WebControls命名空间
1.2Web控件的类层次结构

*导出类
。大多数内置的ASP.NET服务器控件都会发送一个HTML元素。例如,TextBox Web控件发送一个<input>元素,其类型属性设置为

text;DataGrid Web控件发送一个<table>元素,为每条要显示的记录发送<tr>元素,为每个字段发送<td>列。
。但是,不是所有有控件都需要发送HTML元素。例如,Repeater也不将其输出放在HTML元素中。
。那些显示为HTML元素的服务器控件,如TextBox,Button,DataGrid等等,是从System.Web.UI.WebControls.WebControl类导出的,而那

些不产生HTML元素的控件,如Literal,Repeater等,是从System.Web.UI.Control类型导出的。

1.3Web控件的特点
。丰富而一致的对象模型:WebControl基类实现了对所有控件通用的大量属性,这些属性包括ForeColor,BackColor,Font,Enabled等
。对浏览器的自动检测:Web控件能够自动检测客户机浏览器的功能,并相应地调整它们所提交的HTML,从而充分发挥浏览器的功能。
。数据绑定:在Web窗体页面中,可以对控件的任何属性进行数据绑定。

1.4HTML控件,Web控件对比
控件抽象
。HTML控件不具备任何抽象能力。每种控件与HTML标记都是一一对应的。
。Web控件创建了更高组别的抽象,它们没有任何对应的HTM标记(如Calendar和DataGrid)。因为它们不直接映射为HTML标记,所有Web

控件还能够在适当的场合起到合并功能的作用(例如用一个TextBox控件来代替多个标记)。这种抽象为使用第三方提供的种类丰富的控

件工具箱打开了方便之门。

对象模型
。对象模型HTML控件提供了以HTML为中心的对象模型。每种控件都包括一个属性集,可以使用该属性集来控制标记的属性。这个属性使用

了字符串名/值对,并且不是强类型的。
。Web控件提供了基于表单的,类似于Visual Basic的编程模式。它们也提供了属性集,但它们的主要目标在于提供一种格式丰富,类型

安全且标准的属性,如ForeColor,BackColor,Font等 Web控件能够自动对它们生成的结果进行调整,以确保输出结果在高级浏览器和低级

浏览器上的工作同样出色。Web控件还能够针对不同的浏览器提供不同的行为,从而充分发挥浏览器的潜力。例如,Validation控件还可

以通过客户端的脚本创建用于高级浏览器的具有高度交互性的页面。

对生成的HTML的控制
。HTML控件允许您完全控制所显示的内容以及发送到客户机浏览器的内容。
。Web控件提供了更为丰富的对象模型,以及适应多种浏览器的能力。因而,它们没有提供对输出结果的相同程度的控制能力。

*ASP.NET进行表单验证的过程
。ASPX文件被编译,运行
。用户输入数据
。解发Page_Load事件
。更改Web控件属性,提示哪里没有输入
。将页面用HTML重新输出给用户。
。再次提醒用户输入

*验证控件
。验证控件的功能:
。确保所需字段已经填写
。确保用户输入的数据末超出给定的范围
。确保用户输入的数据符合特定的模式
。根据给定的条件比较两个控件,或把控件的值与指定的值相比较
。确保提交页面之前页面上的所有控件都是有效的。

。验证控件
RequiredFieldValidator:检查用户是否输入或选择了任何内容
ReqularExpressionValidator:根据规则表达式检查用户输入。该过程允许进行许多种类的检查,可以用于邮政编码和电话号码等的检查
CompareValidator:将输入控件与一个固定值或另一个输入控件进行比较。例如,它可以用在口令验证字段中。也可以用来比较输入的日

期和数字
RangeValidator:与CompareValidator非常相似,只是它用来检查输入是否在两个值或其它输入控件的值之间。
CustomValidator:允许用户编写自己的代码以加入到验证框架中。

验证控件的共享成员
ControlToValidate:设置或获取一个String类型的值。此String类型的值指定要验证的输入控件。
Display:设置或获取确定Validation控件的错误信息如何显示的值。该值必须是ValidatorDisplay枚举指定的值之一。默认为Static
EnableClientScript:设置或获取是否执行客户端验证的布尔值。服务器端验证总是使用Validation控件执行,与该设置无关。默认为

true
Enabled:确定是否使用控件。
ErrorMessage:string值,表示用户输入无效时要显示的错误信息。
ForeColor:Color值,表示错误信息的颜色。默认时Color.Red
IsValid:bool值,表示ControlToValidate属性指定的控件是否通过验证
Validate:此访法导致它调用的控件执行验证,并用结果更新IsValid属性


*正则表达式
。“.”表示任意字符
。“*”表示和其他表达式一起,表示容易组合
。“[A-Z]”表示任意大写字母
。“\d”表示任意一个数字
例如
。\S{6,10} 为6-10位字符
。\d{5}    5位整数
。.*[@#$%^&*/].*    口令必须包含@#$%^&*/中的一个
。[a-zA-Z]{6,10} 口令必须由6-10个字母组成

*从ASP.NET服务器控件插入客户端脚本
。尽管从技术角度讲,Microsoft@ASP.NET服务器控件的所有功能都可以在服务器端执行,但通常情况下通过添加客户端脚本可以大大增加

服务器控件的可用性。例如,ASP.NET验证Web控件可以在服务器端执行所有的验证检查。但是,对对高版本浏览器,验证Web控件也会发

送客户端脚本,以在客户端进行验证。

ASP.NET服务器控件可以发送两种客户端脚本:
。客户端脚本块:客户端脚本块通常是用javaSrcipt编写的,其中通常包含在发生特定的客户端事件时执行的函数。
。客户端HTML属性:客户端HTML属性提供将客户端事件与客户端脚本联系在一的方法。

使用System.Web.UI.ClientScriptManager类包含的两个方法可以将客户端脚本代码发送到由ASP.NET Web页面提供的HTML中:
。RegisterStartupScript(key,Script):在Web窗体的结尾处(在</form>标识之前)发送脚本块。
。RegisterClientScriptBlock(key,Script):在Web窗体的开始处(紧接着<from runat="server">标识之后)发送脚本块。

带有指定关键字的脚本块是否已添加到页面中。
。IsStartupScriptRegistered(key)
。IsClientScriptBlockRegistered(key)
使用上面两个方法。这样一来,验证Web控件就不会先花时间构建要发送的客户端代码,而是先检查是否已经存在使用关键字

ValidatorIncludeScript注册的脚本。如果存在,控件就会放弃构建客户端脚本块,因为脚本块已经由页面上的其他验证控件构建了。

*发送ASP.NET服务器Web控件的HTML属性
。这种方法通常只适用于从System.Web.UI.WebControls.WebControl类导出的服务器控件,因为从这个类导出的控件会发送某些HTML元素

。WebControl类包含一个将HTML元素属性添加到由Web控件发出的HTML元素的方法。该方法称为AddAttributesToRender(),它只有一个输

入参数,即HtmlTextWriter的实例。

要向Web控件添加HTML属性,您可以使用HtmlTextWriter的以下两个方法之一:
。AddAttribute():用于将title,class,style和onclick等HTML属性添加到HTML元素
。AddStyleAttribute();用于将样式设置添加到HTML元素,如background-color,color和font-size等。

 

------------------------------------------------------

 

ASP.NET如何:向 ASP.NET Web 服务器控件添加客户端脚本事件

-----------------------------------------------------

IE Web Control
2002年,Microsoft@发布了四种ASP.NET web控件,用于为使用Microsoft Internet Explorer的Web访问者提供更好的体验。这些控件包含:
。MulitPage Web控件
。TabStrip Web控件
。Toolbar Web控件
。TreeView Web控件

TreeView IE Web控件,查MSDN好好补一下。

posted @ 2009-03-30 13:37  teacherzj  阅读(277)  评论(0编辑  收藏  举报