zoukankan      html  css  js  c++  java
  • ASP.NET中的验证控件

    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 == "1" )
            {
                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 = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
            int days = data[month-1];                   //得到用户输入月的天数
            args.IsValid = (day >= 1 && 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 用户同时显示警告对话框

  • 相关阅读:
    在 Students 的 Index 页面增加列标题链接(排序),分页,过滤和分组功能
    Contoso 大学
    如何搭建MVC + EF 框架
    EF与手写Model的区别以及联系
    報錯:One or more validation errors were detected during model generation:System.Data.Edm.EdmEntityType: : EntityType 'Movie' has no key
    Oracle四舍五入,向上取整,向下取整
    datagrid中设置编辑,删除列是否可以访问
    datagrid中设置编辑,删除列是否可以访问
    C#实现打印
    C#中rpt的数据类型和Oracle中数据类型的匹配
  • 原文地址:https://www.cnblogs.com/xgao/p/4174096.html
Copyright © 2011-2022 走看看