zoukankan      html  css  js  c++  java
  • MVC验证04-自定义验证规则、日期范围验证

    本文体验范围验证。与本文相关的包括:

    MVC验证01-基础、远程验证  
    MVC验证02-自定义验证规则、邮件验证  
    MVC验证03-自定义验证规则、禁止输入某些值  

    当需要对字符串长度进行验证,可以用StringLength:
    [StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)]

    当需要对数组范围进行验证,可以用Range:
    [Range(0,5)]

    如果需要对日期范围进行验证呢?
    假设来验证日期,以当前日期为基准,介于当前日期和第七天之间的日期为有效,其它无效。

      自定义验证特性,继承 ValidationAttribute 并实现IClientValidatable

    重写基类ValidationAttribute的IsValid()方法,是为了服务端验证用的。
    实现IClientValidatable接口方法,是为了在前端html元素增加某个属性,好让jquery侦测到。

    展开

    注意:
    ■ ValidationType = "dayrange"中的dayrange必须小写,否则报错。
    ■ ValidationType = "dayrange"最终成为html元素的一个属性data-val-dayrange,从而能被jquery侦测辨别。
    ■ rule.ValidationParameters["min"]和rule.ValidationParameters["max"],min和max将作为参数供jquery扩展方法使用,当然也必须是小写。

      把自定义验证特性打到View model上

    [DayRange(0, 7)]验证当天到第七天之内的日期。

    展开

      扩展jquery验证jQuery.validator.dayrange.js

    //扩展jquery验证方法
    //第一个参数是前端输入的值
    //第二个参数是html元素
    //第三个参数是自定义验证特性DayRangeArribute中rule.ValidationParameters["min"]和rule.ValidationParameters["max"]的键值
    jQuery.validator.addMethod('dayrange', function(value, element, param) {
        if (!value) {
            return false;
        }
        //value:1999/1/1
        var valueDateParts = value.split('-');
        var minDate = new Date();
        var maxDate = new Date();
        var now = new Date();
        var dateValue = new Date(valueDateParts[2],
                            (valueDateParts[1] - 1),
                             valueDateParts[0],
                             now.getHours(),
                             now.getMinutes(),
                             (now.getSeconds() + 5));
     
        minDate.setDate(minDate.getDate() - parseInt(param.min));
        maxDate.setDate(maxDate.getDate() + parseInt(param.max));
     
        return dateValue >= minDate && dateValue <= maxDate;
    });
     
    //第一个参数是jquery验证扩展方法名
    //第二和第三个参数分别是最小或最大值
    //第三个参数为DayRangeAttribute中ValidationType对应的值
    jQuery.validator.unobtrusive.adapters.addMinMax('dayrange', 'min', 'max', 'dayrange');

      Register.cshtml视图

    展开

    效果:

    日期范围验证

  • 相关阅读:
    打成jar包运行,依然可以找到指定路径的xml
    Springboot整合Ehcache 解决Mybatis二级缓存数据脏读 -详细
    Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader
    Springboot + Mybatis + Ehcache
    Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class
    缓存的设计与使用
    一二级缓存
    HttpServletResponse 返回的json数据不是json字符串,而是json对象
    消息中间件选型
    为什么要使用MQ消息中间件?
  • 原文地址:https://www.cnblogs.com/darrenji/p/3580777.html
Copyright © 2011-2022 走看看