刚才写了自定义验证控件,这里也顺便把其他验证控件列出来。相关资料网上搜集的。
1.RequiredFieldValidator:非空验证控件
主要属性:
ControlToValidate :要验证的控件ID
ErrorMessage :验证的控件无效时显示的消息
InitialValue :要验证的字段的初始值,很少用到
2.CompareValidator:比较验证控件
主要属性:
ControlToCompare :用于进行比较的控件ID
ControlToValidate :要验证的控件ID
ErrorMessage :验证的控件无效时显示的消息
Operator :对值进行比较操作,默认为Equal(=)
Type:用于比较的值的数据类型
Operator 属性 | 说明 |
---|---|
Equal | 所验证的输入控件的值与其他控件的值或常数值之间的相等比较。 |
NotEqual | 所验证的输入控件的值与其他控件的值或常数值之间的不等比较。 |
GreaterThan | 所验证的输入控件的值与其他控件的值或常数值之间的大于比较。 |
GreaterThanEqual | 所验证的输入控件的值与其他控件的值或常数值之间的大于或等于比较。 |
LessThan | 所验证的输入控件的值与其他控件的值或常数值之间的小于比较。 |
LessThanEqual | 所验证的输入控件的值与其他控件的值或常数值之间的小于或等于比较。 |
DataTypeCheck | 输入到所验证的输入控件的值与 Type属性指定的数据类型之间的数据类型比较。如果无法将该值转换为指定的数据类型,则验证失败。 |
如果Operator属性为DataTypeCheck,将忽略ControlToCompare 和 ValueToCompare属性,同时Type属性起作用。
Type属性 | 说明 |
String | 指定字符串数据类型。 |
Integer | 指定 32 位有符号整数数据类型。 |
Double | 指定双精度浮点数数据类型。 |
Date | 指定日期数据类型。 |
Currency | 指定货币数据类型 |
3.RangeValidator:数据范围验证控件
主要属性:
ControlToValidate :要验证的控件ID
ErrorMessage :验证的控件无效时显示的消息
MaximumValue:所验证控件的最大值
MinimumValue:所验证控件的最小值
4.RegularExpressionValidator:数据格式验证控件
主要属性:
ControlToValidate :要验证的控件ID
ErrorMessage :验证的控件无效时显示的消息
ValidationExpression:用于确定有效性的正则表达式,系统默认提供了几个正则表达式,如果需要自己新建,就要了解正则表达式的意义,推荐一篇网摘:正则表达式整理备忘
正则表达式 | 说明 |
方括号“[ ]” | 用与定义可接受的字符。[abc123] 表示控件只能接受 a,b,c,1,2,3 这6个字符 |
反集合符号 “ ^ ” | 用于定义不可以接受的字符。[^a-h] 表示控件除了 a 到 h 8个字符外,都可以接受 |
花括号“{ }” | 定义必须输入的字符个数。{6}表示只能输入6个字符 ; {6,}表示必须输入6个以上,无上限 ; {2,6} 表示必须输入2至6个字符;但是花括号必须放在方括号后面,例如 [a-z]{4} 表示必须输入 4位a和z之间的任意字符 |
小圆点 “ . ” | 用于代表任意字符。 例如 .{3,6}表示接受3到6个任意字符。 |
竖线 “ | ” | 用于表示 “或”的逻辑符号。例如 [1-9]{3,6}|[A-Za-z]{3} 表示可以接受 3到6个数字或者 3个字母。 (大小写都可以区别的哦) |
小括号“ () ” | 用于分块,与数字运算中的小括号作用类似 |
斜线 “ \ ” | 若希望可以接受的字符包含上述特殊字符。例如 \([0-9]{3}\),表示输入格式为“(xxx)”的电话区号 |
5.ValidationSummary:验证错误信息显示控件
主要属性:
DisplayMode:摘要显示格式
ShowMessageBox:是否弹出错误的消息对话框
ShowSummary:是否显示错误摘要文本
6.CustomValidator:自定义验证控件
主要属性:
ControlToValidate :要验证的控件ID
ErrorMessage :验证的控件无效时显示的消息
ValidateEmptyText:控件文本为空时,是否验证控件
ClientValidationFunction:客户端脚本验证功能,默认为空。如希望在服务器添加验证,则使其为空并填写ServerValidate事件,如希望在客户端添加验证,则该属性值为JavaScript的function名。
主要事件:
客户端验证:ClientValidationFunction="clientv"
<script type="text/jscript">
function clientv(s,e)
{
if(e.Value=="客户端")
{
e.IsValid=true;
}
else
{
e.IsValid=false;
}
}
</script>
服务器验证:ClientValidationFunction=""
ServerValidate:调用以在服务器上执行验证;双击控件或者选用事件。
1protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
2 {
3 try
4 {
5 //如果输入的值为偶数,则验证通过。args.Value:需要验证的控件的值
6 if ((Convert.ToInt32(args.Value) % 2) == 0)
7 {
8 //是否通过验证
9 args.IsValid = true;
10 }
11 else
12 {
13 args.IsValid = false;
14 }
15 }
16 catch(Exception e)
17 {
18 args.IsValid = false;
19 }
20 }
21
22
7.禁用验证控件
在特定条件下,可能需要避开验证,可以通过以下3种方式禁用数据验证:
- 在特定控件中禁用验证:将相关控件的CausesValidation属性设置为false
- 禁用验证控件:将验证控件的Enabled属性设置为false
- 禁用客户端验证:将验证控件的EnableClientScript属性设置为false
javascript 函数和 CustomValidator控件相结合使用
<asp:TextBox ID="txtPwdPrompt"runat="server"></asp:TextBox>
<asp:CustomValidatorid="CVPwdPrompt"runat="server" ClientValidationFunction="CheckPwd"ControlToValidate="txtPwdPrompt" ErrorMessage="<spanstyle='font:12px'>提示问题必须在2-50个字符内</span>"Display="None"></asp:CustomValidator>
Javascript函数:
<script language="javascript" type="text/javascript">
functionClientValidation(source,value)
{
varstr = value.Value;
varlen = 0;
for(var i=0;i<str.length;i++)
{
if(str.charCodeAt(i)<128)
len++;
else
len+=2;
}
if(len>5)
value.IsValid = true;
else
value.IsValid = false;
}
functionCheckPwd(source, arguments) {
if(arguments.Value.length > 2 && arguments.Value.length < 11)
{
arguments.IsValid = true;
alert("验证通过!");
}
else
{
arguments.IsValid = false;
alert("请输入密码的长度3到10之间!");
}
}
</script>
函数有两个参数:
source 参数是对为 CustomValidator 控件呈现的 <span> 元素的引用。因此,您可以编程的方式控制 <span> 标记,如修改 InnerHtml 属性。
arguments 参数是一个具有以下两个属性的对象:Value 和 IsValid。使用此参数可以获取控件的值,以根据自定义验证例程验证并指示该值是否有效。
使用 ClientValidationFunction 属性指定与 CustomValidator 控件关联的客户端验证脚本函数的名称。由于该脚本函数在客户端执行,因此该函数必须使用目标浏览器支持的语言(如 VBScript 或 JScript)来编写。
服务器端验证与客户端验证一样,可以通过使用 arguments 参数的 Value 属性来访问要验证的输入控件中的字符串。通过设置 arguments 参数的 IsValid 属性返回验证结果。
代码如下:
protectedvoid cvLength_ServerValidate(object source, ServerValidateEventArgsargs)
{
if(args.Value.Length > 5)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
注意:Value首字母必须大写