介绍

Validate.Net将Validate.js移植到.Net平台,可以更方便、更快捷的校验实体内属性值是否合法。内置多种常规数据校验规则(校验必填、校验字符串长度区间、校验最大最小值、校验值区间、校验最大最小长度、校验长度区间、Email、邮编、url、正整数、负整数、非正整数、非负整数、ip地址、qq、身份证号码、统一社会信用代码),支持自定义正则校验、方法重写等扩展校验。是做后端开发的必备利器。

软件架构

.netframework4.5以上、反射、特性

安装教程

1. 项目中引用:Validate.Net.dll(文件在目录Validate.Net\bin\Release\下);
2. 导入命名空间:using Validate.Net;

3. gitee地址 https://gitee.com/lkings/Validate.Net

4. 后续将支持nuget安装

使用说明

实体类示例代码:

    public class UserModel
    {
        /// <summary>
        /// 校验必填
        /// </summary>
        [ValidateRequired]
        [Describe("密码")]
        public string Password { get; set; }
        /// <summary>
        /// 校验字符串长度区间
        /// </summary>
        [ValidateRangeLength(6, 20)]
        [Describe("用户账户")]
        public string Account { get; set; }
        /// <summary>
        /// 校验字母,只能包含字母
        /// </summary>
        [ValidateLetter]
        public string Letter { get; set; }
        /// <summary>
        /// 校验最大值
        /// </summary>
        [ValidateMaxValue(20)]
        public int Age { get; set; }
        /// <summary>
        /// 校验最小值
        /// </summary>
        [ValidateMinValue(5)]
        public int MinLong { get; set; }
        /// <summary>
        /// 校验值区间
        /// </summary>
        [ValidateRangeValue(10,20)]
        public int AgeRange { get; set; }
        /// <summary>
        /// 校验最大长度
        /// </summary>
        [ValidateMaxLength(20)]
        public string MaxLength { get; set; }
        /// <summary>
        /// 校验最小长度
        /// </summary>
        [ValidateMinLength(5)]
        public string MinLength { get; set; }
        /// <summary>
        /// 校验Email
        /// </summary>
        [ValidateEmail]
        public string Email { get; set; }
        /// <summary>
        /// 校验邮编
        /// </summary>
        [ValidateZipCode]
        public string ZipCode { get; set; }
        /// <summary>
        /// 校验包含中文
        /// </summary>
        [ValidateChinese]
        public string Chinese { get; set; }
        /// <summary>
        /// 校验负整数
        /// </summary>
        [ValidateNegtiveInt]
        public int NegtiveInt { get; set; }
        /// <summary>
        /// 校验正整数
        /// </summary>
        [ValidatePositiveInt]
        public int PositiveInt { get; set; }
        /// <summary>
        /// 校验非负整数
        /// </summary>
        [ValidateNonnegativeInt]
        public double NonnegativeInt { get; set; }
        /// <summary>
        /// 校验非正整数
        /// </summary>
        [ValidateNonpositiveInt]
        public double NonpositiveInt { get; set; }
        /// <summary>
        /// 校验ip地址
        /// </summary>
        [ValidateIp]
        public string Ip { get; set; }
        /// <summary>
        /// 校验url
        /// </summary>
        [ValidateUrl]
        public string url { get; set; }
        /// <summary>
        /// 校验qq号
        /// </summary>
        [ValidateQQ]
        public string QQ { get; set; }
        /// <summary>
        /// 自定义正则校验、自定义校验失败提示信息
        /// </summary>
        [ValidateRegular("^[0-9]{6}$", "邮编格式校验失败(自定义)")]
        public string CustomStr { get; set; }
        /// <summary>
        /// 校验身份证(15位身份证号,和18位身份证号)
        /// </summary>
        [ValidateIDCard]
        public string IDCard { get; set; }
        /// <summary>
        /// 校验统一社会信用代码
        /// </summary>
        [ValidateSocialCreditCode]
        public string SocialCreditCode { get; set; }
        /// <summary>
        /// 一般密码校验(包含数字和字母及常规特殊符号)
        /// </summary>
        [ValidatePwd]
        public string Pwd { get; set; }
    }

调用示例

    static void Main(string[] args)
    {
        UserModel user = new UserModel()
        {
            Account = "1000",
            Password = "",
            Email = "77111.cn",
            ZipCode = "6572151",
            Chinese = "wjl",
            NegtiveInt = 1,
            PositiveInt= -2,
            Ip = "192.0.0.256",
            url = "https://www.baidu.com",
            CustomStr = "657215@",
            MaxLength = null,
            Age = 100,
            Letter = "www",
            MinLong = 0,
            AgeRange = 0,
            MinLength = "123456",
            QQ = "13155654521",
            IDCard = "2102111972110408721",
            SocialCreditCode = "91350500611880326T",
            Pwd = "wjl1345",
            NonpositiveInt = -66.1,
            NonnegativeInt = 66.1,
        };
        if (!user.Validate<UserModel>(out List<string> errorList))
        {
            foreach (string error in errorList)
            {
                Console.WriteLine($"{error}\r\n");
            }
        }
        Console.ReadLine();
    }

执行结果

    属性:密码 - 值:  错误信息: 校验必填项失败
    属性:用户账户 - 值:1000  错误信息: 长度范围为:[6—20]
    属性:Age - 值:100  错误信息: 最大值为:20
    属性:MinLong - 值:0  错误信息: 最小值为:5
    属性:AgeRange - 值:0  错误信息: 值范围为:[10—20]
    属性:Email - 值:77111.cn  错误信息: 邮箱格式校验失败
    属性:ZipCode - 值:6572151  错误信息: 邮政编码格式校验失败
    属性:Chinese - 值:wjl  错误信息: 中文校验失败(必须包含中文)
    属性:NegtiveInt - 值:1  错误信息: 负整数校验失败
    属性:PositiveInt - 值:-2  错误信息: 正整数校验失败
    属性:Ip - 值:192.0.0.256  错误信息: 校验ip失败
    属性:CustomStr - 值:657215@  错误信息: 邮编格式校验失败(自定义)
    属性:IDCard - 值:2102111972110408721  错误信息: 校验身份证合法性失败
    属性:Pwd - 值:wjl1345  错误信息:  一般密码校验失败(包含数字和字母及常规特殊符号)

gitee地址

开源后端数据校验插件Validate.Net,类似Validate.js的更多相关文章

  1. js数据校验插件

    //数据校验 /** *{type:"类型",notEmpty:true,regxp: reg,MaxLength: number,MinLength number,message ...

  2. Golang使用validator进行数据校验及自定义翻译器

    Golang使用validator进行数据校验及自定义翻译器 包下载:go get github.com/go-playground/validator/v10 一.概述 在接口开发经常会遇到一个问题 ...

  3. 第六章、Struts2数据校验

    一.三种实现方式 ① 用validate()方法实现数据校验 继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Actio ...

  4. 06章 Struts2数据校验

    一.三种实现方式 ① 用validate()方法实现数据校验 继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Actio ...

  5. struts2数据校验与国际化

    数据校验: Action里的validate()方法能校验action类所有的方法,如果有错,如:addFieldError,会自动返回到workflow校验拦截器不向下继续进行,不用return i ...

  6. struts2:数据校验,通过Action中的validate()方法实现校验,图解

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种 Struts2中提供了一个com.opensymphony.xwork2.Valid ...

  7. struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)

    前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解 如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通 ...

  8. Struts2中validate数据校验的两种常用方法

    本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器.  1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...

  9. springboot使用validation 插件做数据校验

    不多说废话. 首先,我们需要在入参实体对象中,使用注解,控制 @Datapublic class UpdateShufflingRequest { private String shuffling_l ...

随机推荐

  1. 代码文件编码unicode 无标签, 导入vs项目编译不过的问题

    很多人经常需要把代码分别在linux.windows上编译.在linux中gcc编译的时候,文件格式为utf-8无bom格式,可是如果将文件拿到windows上,用vs编译的时候,发现各种报错,且都是 ...

  2. Django---进阶3

    目录 无名有名分组反向解析 路由分发 名称空间(了解) 伪静态(了解) 虚拟环境(了解) django版本区别 视图层 三板斧 JsonResponse对象 form表单上传文件及后端如何操作 req ...

  3. VS2019阅读源码 翻译注释插件

    VS翻译插件: Comment Translator China https://marketplace.visualstudio.com/items?itemName=netcorevip.Comm ...

  4. Let's GO(四)

    人生苦短,Let's GO Let's GO(一) Let's GO(二) Let's GO(三) Let's GO(四) 今天我学了什么? 1.panic && recover Go ...

  5. python基础之打/解包及运算符与控制流程

    python基础之打/解包及运算符与控制流程 python中的解压缩(即序列类型的打包和解包) python提供了两个设计元祖和其他序列类型的处理的便利,也就是自动打包与自动解包功能,比如: data ...

  6. Django之实现登录随机验证码

    登录验证码是每个网站登录时的基本标配,网上也有很多相应的文章, 但是从生成验证码到 应用到自己的网站上的全步骤,并没有看到很多, 为了节约大家的时间,我把整体步骤写下来, 即拿即用哈 1. 生成随机验 ...

  7. k8s极简史:K8s多集群技术发展的历史、现状与未来

    引子 随着云原生技术的普及,越来越多的企业使用Kubernetes来管理应用,并且集群规模也呈爆发式增长,企业也亟需应对随集群规模增长而带来的各种挑战.同时,为了更好地提供高可用.弹性伸缩的应用,企业 ...

  8. 设计模式:chain of responsibility模式

    目的:弱化发出请求的对象和处理请求对象的之间的关系 理解:每个处理请求的对象仅仅只关注自己能处理的请求,不关系其他请求 优点: 无需一个管理类来匹配所有的请求,更灵活 责任链可以动态的调整 Andor ...

  9. Oracle创建自动增长列

    前言: Oracle中不像SQL Server在创建表的时候使用identity(1001,1)来创建自动增长列,而是需要结合序列(Sequences)和触发器(Triggers)来实现 创建测试表 ...

  10. 学习2周C++的收获

    学习2周C++的收获 首先,C++是一种实用性很强的程序设计语言.它使用起来灵活.方便,运算符丰富,有结构化的层次…… 那么,我学习这个语言主要是为了参加信息学奥林匹克竞赛,这不仅要熟练地掌握一门语言 ...