ASP.NET提供了如下的控件:
  RequiredFieldValidator: 字段必填 (ControlTovalidate设定要验证的控件)
  RangeValidator: 值在给定的最大值,最小值之间()
  CompareValidator: 用于比较两个值的关系是否满足要求或者是否是指定类型的数据
  RegularExpressionValidator: 校验数据满足正则表达式
  CustomValidator: 自定义验证

Validator验证控件的共性

IsValid属性,用来判断页面中的所有Validator是否都校验通过,只有都校验通过才为True,
校验数据时必需判断该值,做出相应的措施
Display属性, 所有的验证控件都有,用来决定如何显示错误作息,一共有三个值:
Static: 占位隐藏,visiblity样式为hidden来实现隐藏
Dynamic: 不点位隐藏,display模式为none来实现隐藏
ValidationGroup属性, 验证组,当一个页面同时放置注册和登录表单时,验证就会同时进行,当登录时,
注册验证也会触发,可以使用验证组来解决,将同一组的控件(表单,提交按钮,Validator)
中的ValidationGroup属性设置一样就行了
如果将按钮控件的CausesValidation属性设置为false,则这个按钮的点击不触发校验
几乎所有的控件都有ControlToValidat,Text属性,所有控件都几乎在客户端和服务器端都要进行校验
除了非空验证控件外,其它几个默认都不会对非空进行校验,如果要不允许为空则需要手动设置

1. RequiredFieldValidator: 字段必填
  ControlTovalidate 设定要验证的控件
  ErrorMessage 设置错误输出信息与下面一样
  Text 为当被验证的控件为空的时候显示的错误信息,也可以写任何HTML内容,有时候控件如果有默认值也要认为空值的话,只要将 InitialValue 设置为那个默认值就行

2. RangeValidator: 验证值的范围
  ControlTovalidate 设定要验证的控件
  MinimumValue 最小值
  MaximumValue 最大值
  Type 类型(String,Integer,Double,Date,Currency等)

3. CompareValidator: 比较验证控件
  ControlTovalidate 设定要验证的控件
  Type 类型(String,Integer,Double,Date,Currency等)
  Operator 比较操作符,可选值DataTypeCheck,Equal,GreaterThan,GreaterThanEqul等
  ValueToCompare 比较指定的值
  ControlToCompare 设定与另外一个控件进行比较

4. RegularExpressionValidator: 校验数据满足正则表达式
  ControlTovalidate 设定要验证的控件
  ValidationExpression 指定正则表达式,自带一些常用的

5. CustomValidator: 自定义验证
  ServerValidate事件 服务端校验代码,在事件处理读取args.Value来获得待校验的值合法则将 args.IsValid 设置为true,否则为 false
  ClientValidationFunction事件 客户端校验代码(一个函数名),代码需要手动在<script>中写

//服务端验证 设置 ServerValidate事件
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (args.Value == "" )
{
args.IsValid = true; //相等则返回 true
}
else
{
args.IsValid = false; //不相等则返回 false
}
}
//客户端验证 设置 ClientValidationFunction事件
<script type="text/javascript">
function test(src, args) { //必需要设置两个参数src可随便设置
if (args.Value == "1") {
args.IsValid = true; //相等则返回 true
} else {
args.IsValid = false; //不相等则返回 false
}
}
</script>

 

客户端校验

有些服务器端控件的ID会自动更改,如果用 javascript 去判断,将会找不到ID,可用 ClientID 解决
如: <%=TextBox1.ClientID %> 会自动找到对应的客户端ID

案例:根据用户输入的月份判断用户输入的天数是否合法(如 2月29天),
如果用户输入2月份,天数输入31,则不合法

用户拉一个范围验证控件,与一个自定义验证控件,验证控件验证月份是否在 1-12 月,
自定义验证控件如下:

//服务端校验  设置 ServerValidate事件
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
int month = Convert.ToInt32(TextBox1.Text); //获得用户输入月份
int day = Convert.ToInt32(args.Value); //获得用户输入天数
//将每个月的天数存放在 int数组
int[] data = { , , , , , , , , , , , };
int days = data[month-]; //得到用户输入月的天数
args.IsValid = (day >= && day <= days); //判断用户输入的天数是否与程序相等
}
//客户端校验 设置 ClientValidationFunction事件
<script type="text/javascript">
function test(src, args) {
var months = document.getElementById("<%=TextBox1.ClientID %>");
var month = parseInt(months.value,10); //获得用户输入月份
var day = parseInt(args.Value,10); //获得用户输入天数 var data = [31,29,31,30,31,30,31,31,30,31,30,31];
var days = data[month-1]; //得到用户输入月的天数
args.IsValid = (day >= 1 && day <= days); //判断用户输入的天数是否与程序相等
}
</script>
汇总错误消息

使用Validator错误消息会显示在放置的位置,如果消息过长,希望把错误信息集中显示
ValidationSummary控件用来集中显示错误消息,第个验证控件都有ErrorMessage,Text两个属性
ErrorMessage是用来显示到ValidationSummary中的值,Text是用来显示到Validator位置的值
如果Text为空,则ErrorMessage会同时显示到ValidationSummary和控件的位置
一般Text的值要简短(如"必填","*"),
ValidationSummary的属性:
  DiplayMode 显示模式
  ShowMessageBox 用户同时显示警告对话框

最新文章

  1. 高品质开源工具Chloe.ORM:支持存储过程与Oracle
  2. Win7 32bit + Matlab2013b +Visual Studio 2010联合编程配置
  3. win 7 普通家庭版 装IIS
  4. MS14-068 privilege escalation PoC: 可以让任何域内用户提升为域管理员
  5. Doubles 分类: POJ 2015-06-12 18:24 11人阅读 评论(0) 收藏
  6. 手机App开发
  7. sql脚本太大无法打开的解决办法
  8. zoj 3165 (最小割,最大点权独立集)
  9. JavaWeb项目开发案例精粹-第2章投票系统-001设计
  10. 窗口 namedWindow(), destroyWindow(), destroyAllWindows()[OpenCV 笔记6]
  11. 面试时,问哪些问题能试出一个Android应用开发者真正的水平?
  12. Asp.net中实现同一用户名同时登陆,注销先前用户(转)
  13. android 利用Bitmap获取圆角矩形、圆形图片
  14. 多尺度二维离散小波重构waverec2
  15. salesforce 零基础学习(七十)使用jquery table实现树形结构模式
  16. VS2015下OpenGL库的配置
  17. FJUT寒假作业第二周G题解快速幂
  18. Java开发环境Jave EE 和 jdk 下载
  19. springboot打包不同环境配置与shell脚本部署
  20. mysql并发控制之快照读和当前读

热门文章

  1. openstack 制作大于2TB根分区自动扩容的CENTOS镜像
  2. HDU5407.CRB and Candies(数论)
  3. [置顶] 斗地主算法的设计与实现--项目介绍&amp;如何定义和构造一张牌
  4. Robot Framework自动化测试(二)第一个用例
  5. 分布式搜索Elasticsearch增、删、改、查操作深入详解
  6. PowerDesigner建数据库模型增加自定义扩展属性
  7. 【面试虐菜】—— Oracle中CHAR、VARCHAR的区别
  8. ActiveMQ, Qpid, HornetQ and RabbitMQ in Comparison
  9. Android Studio中使用Gradle打包
  10. Android ListView分页加载时图片显示问题