您的位置:首页 > 编程语言 > ASP

ASP.NET下验证控件的应用

2008-09-19 15:35 381 查看
ASP.NET下验证控件的应用

ASP.NET是微软推出的WEB开发工具,我们来看看ASP.NET的验证控件,感受ASP.NET的强大功能。 有了ASP.NET,你不但可以轻松的实现对用户输入的验证,而且,还可以选择验证在服务器端进行还是在客户端进行,再也不必考虑那么多了,程序员们可以将重要精力放在主程序的设计上了。
主要的验证控件有6种:
验证类使用的控件
必需项RequiredFieldValidator 确保用户不会跳过某一项。有关详细信息,请参见如何:验证 ASP.NET 服务器控件的必需项
与某值的比较CompareValidator 将用户输入与一个常数值或者另一个控件或特定数据类型的值进行比较(使用小于、等于或大于等比较运算符)。有关详细信息,请参见如何:对照特定值验证 ASP.NET 服务器控件如何:对照数据类型验证 ASP.NET 服务器控件
范围检查RangeValidator 检查用户的输入是否在指定的上下限内。可以检查数字对、字母对和日期对限定的范围。有关详细信息,请参见如何:对照取值范围验证 ASP.NET 服务器控件
模式匹配RegularExpressionValidator 检查项与正则表达式定义的模式是否匹配。此类验证使您能够检查可预知的字符序列,如电子邮件地址、电话号码、邮政编码等内容中的字符序列。有关详细信息,请参见如何:根据模式对 ASP.NET 服务器控件进行验证
用户定义CustomValidator 使用您自己编写的验证逻辑检查用户输入。此类验证使您能够检查在运行时派生的值。有关详细信息,请参见如何:使用自定义函数对 ASP.NET 服务器控件进行验证如何:对照数据库中的值验证 ASP.NET 服务器控件
相关控件,即 ValidationSummary 控件不执行验证,但经常与其他验证控件一起用于显示来自页面上所有验证控件的错误信息。有关更多信息,请参见如何:控制 ASP.NET 服务器控件的验证错误信息显示
对于一个输入控件,您可以附加多个验证控件。例如,您可以指定某个控件是必需的,并且该件还包含特定范围的值。
下面我们来看看这些控件的具体的使用方法
一:RequiredFieldValidator(必须字段验证)
标准代码如下: <ASP:RequiredFieldValidator id="Validator_ID" Rant =”sever” ControlToValidate="要检查的控件名"ErrorMessage="出错信息" Display="” text = “*” ValidationGroup=””> 占位符</ASP: RequiredFieldValidator >
其中:ControlToValidate:表示要进行检查控件ID;
ErrorMessage:表示当检查不合法时,出现的错误信息;
Display:错误信息的显示方式(Static[/b]表示控件的错误信息在页面中占有肯定位置;Dymatic[/b]表示控件错误信息出现时才占用页面控件;None[/b]表示错误出现时不显示,但是可以在ValidatorSummary[/b]中显示)
Text : *指示某字段必填的简便方法。只在出现错误时,才显示该文本
占位符[/b]:表示Display为Static时,错误信息占有"占位符"那么大的页面空间(效果基本上和Text一样,每个控件都有,以后不再写了)
[/b]ValidationGroup:将验证程序分组成视为单元的各个组(2.0新加)
以上是必须字段验证控件的一般属性。现在,让我们来看一个简单的实例:
<asp:TextBox ID="TextBox1" runat="server" Width="200px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" Display = "Dynamic" Text ="*" ControlToValidate="TextBox1" ErrorMessage="必须填写顾客名." ValidationGroup="Group">
<asp:RequiredFieldValidator>
上面的这段代码中,检查控件TextBox1有没有输入,若没有输入的话,就会显示"*"(这段代码若没有Text属性的话,就会显示ErrorMessage)。
如果有控件ValidationSummary就可以通过ValidationGroup属性集中显示ErrorMessage。
注意:以上代码和下面其他控件的代码最好放入Form中, Form最好写为这样:<Form RunAt="Server">其他代码</Form>这样,Form在服务器端执行,提交才会有效;
二:RangeValidator(范围验证)
标准代码如下:<ASP:RangeValidator id="Vaidator_ID" Runat="Server" controlToValidate="要验证的控件ID" type="Integer" MinimumValue="最小值" text=” ” MaximumValue="最大值" errorMessage ="错误信息" Display="Static|Dymatic|None" >占位符</ASP:RangeValidator>
其中:ASP.NET 验证控件不包含自动检查有效日期的控件,但可以将 CustomValidator件用于此用途,
Type:定义控件输入值的类型;
MinimumValue和MaximumValue用来界定控件输入值得范围。
具体的实例如下:
<asp:TextBox ID="TextBox1" runat="server" Width="200px"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate ="TextBox1" Display ="Dynamic" ErrorMessage="购买数量只能是1-99." Type = "Integer" MaximumValue = "99" MinimumValue = "1" ValidationGroup ="Group">
</asp:RangeValidator>
上面的代码,是把购买数量界定在一定的范围之内了。如果输入的数据不是在1—99之内的数字,就会显示错误信息:"购买数量只能是1-99."(如果加Text属性呢?)
三:RegularExpressionValidator(模式匹配)
标准代码如下:<asp:RegularExpressionValidator ID=" Validator_ID" runat="server"ErrorMessage="错误信息"Display="static" ControlToValidate="要验证的控件ID " ValidationGroup=" " ValidationExpression="正则表达式">
</asp:RegularExpressionValidator>
在模式匹配控件当中,最重要的就是正则表达式了,它能够检查可预知的字符序列。(http://blog.csdn.net/taogebx/archive/2008/07/12/2644801.aspx可以作为参考)
下面有一个简单的正则表达式的例子:
<asp:TextBox ID="TextBox2" runat="server" Width="200px"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" Display = "Dynamic"
ErrorMessage="必须填写地址." Text ="*" ValidationGroup="Group">
</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator4" runat="server"
ErrorMessage="地址必须符合规范。" Display="Dynamic"
ControlToValidate="TextBox2" ValidationGroup="Group"
ValidationExpression="^[/u4e00-/u9fa5a-zA-Z/s.#-] {1,40}$">
</asp:RegularExpressionValidator>
上面的代码是一个必须字段验证和一个正则表达式控件的组合,并且把来年改革控件放在同一个单元组,管理上比较方便。上面的正则表达式ValidationExpression="^[/u4e00-/u9fa5a-zA-Z/s.#-]{1,40}$">,表示可以输入中英文字符,空格,#-号等,字符数控制在40个以内。
注意 正则表达式验证控件(RegularExpressionValidator)会自动加入脱字符(^)和美元符号($)作为开始和结束的分隔符.如果你没有在自定义的表达式中加入他们那么最好加入.加入分隔符只是为了让你的表达式得到想要的那部分数据内容.
四:CustomValidator (用户定义)
标准代码如下:<asp:CustomValidator ID=" Validator_ID "runat="server" ErrorMessage="错误信息。" Display=" " ControlToValidate="要验证的控件ID " ClientValidationFunction="验证函数"
ValidationGroup="" ></asp:CustomValidator>
用户自定义控件功能主要是体现在ClientValidationFunction(验证函数)上。
下面用一个日期输入控制来简单的描述一下该控件的实现方法:
前台控件代码:
<asp:TextBox ID="TextBox6" runat="server" Width="200px"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="日期输入必须符合格式。" Display="Dynamic" ControlToValidate="TextBox6" ValidationGroup="Group" ClientValidationFunction="date"
OnServerValidate="CustomValidator1_ServerValidate">
</asp:CustomValidator>
验证函数(在客户端脚本):
<script language="javascript" type ="text/javascript">
function date(oSrc, args){
var iDay, iMonth, iYear;
var arrValues;
arrValues = args.Value.split("/");
iMonth = arrValues[0];
iDay = arrValues[1];
iYear = arrValues[2];
var testDate = new Date(iYear, iMonth - 1, iDay);
if ((testDate.getDate() != iDay) ||
(testDate.getMonth() != iMonth - 1) ||
(testDate.getFullYear() != iYear)){
args.IsValid = false;
return;
}
return true;
}
</script>
处理程序(在服务器端执行):
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){
try{
DateTime.ParseExact(args.Value, "MM/dd/yyyy", null);
args.IsValid = true;
}catch {
args.IsValid = false;
}
}//注意在日期格式中MM表示月份,mm表示分钟
在用户提交该页时运行该代码。该代码使用传入处理程序的 ServerValidateEventArgs (args) 对象与该验证程序控件交互。用户在TextBox6文本框中所输入的值作为 args 对象的 Value 属性传递。在检查用户输入是否有效后,将 args 对象的 IsValid 属性相应地设置为 true 或 false。如果将该属性设置为 false,则该验证程序将显示其错误信息。
上面的一段代码主要是实现日期的输入,输入的格式为MM/DD/YYYY,如果输入格式不对,就显示错误信息(客户端代码和服务端代码有一个就可以实现验证功能,上面的代码是为了后面的检验EnableClientScript属性)。
在使用 CustomValidator 控件时,必须在任何服务器端处理期间检查 System.Web.UI.Page.IsValid 属性以确定是否通过了所有验证检查。IsValid 属性返回该页上所有验证程序控件的累积状态。此属性用于确保任何服务器端处理都已通过所有验证检查。

五:CompareValidator(比较验证)
标准代码如下:<ASP:CompareValidator id="Validator_ID" RunAt="Server" ControlToValidate="要验证的控件ID" errorMessage="错误信息" ControlToCompare="要比较的控件ID" type=" " operator=" " Display=" " ValidationGroup=""> </ASP:CompareValidator>
其中:Type:表示要比较的控件的数据类型;
Operator:表示比较操作,比较控件比较两个控件的输入是否符合程序设定,大家不要把比较仅仅理解为"相等",尽管相等是用的最多的,其实,这里的比较包括范围很广,在这里有七种比较方法:Equal,NotEqual,GreaterThan,GreaterThanEqual,LessThan,LessThanEqual,DataTypeCheck
下面是一个简单的例子:(比较两个TextBox中输入的值是否一样)
<asp:TextBox ID="TextBox8" runat="server"Width="200px"></asp:TextBox>
<asp:TextBox ID="TextBox9" runat="server" Width="200px"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="不相等"ControlToCompare="TextBox8" ControlToValidate="TextBox9" ValidationGroup="Group" Operator="Equal" >
</asp:CompareValidator>
上面的代码中,如果在TextBox8和TextBox9中输入的值不一样的话就会显示错误信息。
在这里,要注意ControlToValidate和ControlToCompare的区别,如果operate为GreateThan,那么,必须ControlToCompare大于ControlToValidate才是合法的。
六:ValidationSummary(验证总结)
标准代码如下:<ASP:ValidationSummary id="Validator_ID" RunAT="Server" HeaderText="头信息" ShowSummary="True|False" ValidationGroup=""
DiaplayMode="List|BulletList|SingleParagraph"
ShowMessageBox="True|False
</ASP: ValidationSummary > 
其中:HeadText:相当于表的HeadText
DisplayMode:表示错误信息显示方式:List相当于HTML中的<BR>;BulletList相当于HTML中的<LI>;SingleParegraph表示错误信息之间不作如何分割; 
ValidationGroup:将验证程序所在的单元组,在现实错误信息时,只显示改单元组中组员的错误信息。
ShowSummary:错误信息显不显示(在本画面上)
ShowMessageBox:如果是true则会自动的弹出一个窗口显示错误信息,False的话就不弹出错误显示窗口
下面有一个例子:
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="Group" ShowMessageBox="true" ShowSummary="false"/>
这段代码在执行是,会弹出一个窗口显示错误信息,在本画面上不显示。

上面列出了这6个验证控件在格式控制上的一些基本的属性和控制方法。在这些属性以外还有一个经常用到的6个验证控件共有的属性EnableClientScript(客户端验证),如果选的是False,则在页面提交后在服务器端进行验证,禁止客户端验证,True就可以在客户端进行验证,默认值为True。当然并不是每一个验证都能在客户端执行,比如自定义代码通过查找服务器端数据库验证用户输入就必须在服务器端进行验证。
我们不妨用CustomValidator控件中的自定义日期控件来试验一下;、
1. 将 CustomValidator 控件的 EnableClientScript 属性设置为 false,暂时禁用客户端验证。
2. 运行该页
3. 填写好其他的字段,并且保证能通过验证;
4. 在日期文本框中,输入一个显然不是日期的字符串,点击执行button。
该页将执行一个到 Web 服务器的往返过程,在此期间服务端验证将失败。对 IsValid 的测试也将失败。显示错误信息。输入一个正确格式的日期,验证通过。
5. 通过将 CustomValidator 控件的 EnableClientScript 属性重新设置为 true,重新启用客户端验证
6. 在日期文本框中输入一个无效日期值,然后按 Tab 键。(不要单击该按钮。)在日期文本框失去焦点时,客户端验证脚本就会立即运行,并且您会看到一条错误信息。(如果在 Internet Explorer 中使用的是自动完成选项,则从自动完成列表中选择某一值时将会向文本框添加该值,但客户端验证程序不会运行。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: