介绍

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. Git篇----创建远程仓库

    现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举 ...

  2. 论TEMP临时变量与VAR静态变量区别

    TEMP临时变量:顾名思义,这种变量类型是临时的,没有固定的存放数据的内存空间.每次扫描结束后则清零,在下个扫描周期开始时,这个变量的值都是不确定的,一般为0.使用临时变量需要遵循一个原则:先赋值再使 ...

  3. 数据可视化之powerBI技巧(二十一)简单三个步骤,轻松管理你的Power BI度量值

    最近碰到几个星友的问题,都是问我之前分享的源文件是如何把度量值分门别类放到不同的文件夹中的,就像这样, 其实在之前的文章中也曾提及过做法,这里再详细说一下制作步骤: 01 | 新建一个空表 点击菜单栏 ...

  4. C# 接口与抽象类的区别? 情景下使用接口,什么情景下使用抽象类?

    接口与抽象类的区别: 接口支持多继承:抽象类不能实现多继承. 接口可以用于支持回调:抽象类不能实现回调,因为继承不支持. 接口只包含方法.属性.索引器.事件的签名,但不能定义字段和包含实现的方法:抽象 ...

  5. Spring Boot Redis 实现分布式锁,真香!!

    之前看很多人手写分布式锁,其实 Spring Boot 现在已经做的足够好了,开箱即用,支持主流的 Redis.Zookeeper 中间件,另外还支持 JDBC. 本篇栈长以 Redis 为例(这也是 ...

  6. DirectX11 With Windows SDK--34 位移贴图

    前言 在前面的章节中,我们学到了法线贴图和曲面细分.现在我们可以将这两者进行结合以改善效果,因为法线贴图仅仅只是改善了光照的细节,但它并没有从根本上改善几何体的细节.从某种意义上来说,法线贴图只是一个 ...

  7. 关于Mint-UI中loadmore组件的兼容性问题

    源代码 遇到的问题 写完了之后数据加载,渲染等等都是没有问题的,但是测试总是提上滑刷新不能用,因为是远程开发,测试提就得改,看代码看文档,看半天看不出来问题,想到了兼容性问题,发现也有人遇到这个坑.安 ...

  8. 史上最全的 jmeter 获取 jdbc 数据使用的四种方法

    jmeter使用jdbc协议获取数据库中数据,很多人都会用,因为大家在做测试的时候,有时候需要大量的用户进行登录,获取需要数据库中真实的数据用于测试,所以常常会用jdbc来获取数据库数据. 那从数据库 ...

  9. QSignalMapper的使用和使用场景

    目录 QSignalMapper的使用和使用场景 常见场景 下面是参考.可看可不看 这篇写的不错,搬运为Markdown了 可以看一下 参考 QSignalMapper的使用和使用场景 QSignal ...

  10. Ethical Hacking - POST EXPLOITATION(1)

    METERPRETER BASICS >help - shows help >background - backgrounds current session >sessions - ...