介绍

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. 记一次使用elasticsearch遇到bug的探索过程

    背景: 练习一个小项目,爬取京东的数据,存到ES库中,然后读取ES库中数据,展示到页面上.效果图如下: 涉及两个接口,一个爬取写入ES接口,一个查询展示接口,当我写完代码信心满满准备看看效果的时候,调 ...

  2. JVM中栈的frames详解

    目录 简介 JVM中的栈 Frame Local Variables本地变量 Operand Stacks Dynamic Linking动态链接 方法执行完毕 简介 我们知道JVM运行时数据区域专门 ...

  3. spring cloud gateway 限流做法

    标题 随风倒十分 反对法

  4. Oracle表的基本查询

    Oracle 分页 1.rownum分页 Select * from emp; Select a1.*,rownum rn from (Select * from emp) a1; 2.显示rownu ...

  5. Scala 面向对象(十一):特质(接口) 四

    1 扩展类的特质 特质可以继承类,以用来拓展该类的一些功能 所有混入该特质的类,会自动成为那个特质所继承的超类的子类 如果混入该特质的类,已经继承了另一个类(A类),则要求A类是特质超类的子类,否则就 ...

  6. scrapy 基础组件专题(八):scrapy-redis 框架分析

    scrapy-redis简介 scrapy-redis是scrapy框架基于redis数据库的组件,用于scrapy项目的分布式开发和部署. 有如下特征:  分布式爬取 您可以启动多个spider工 ...

  7. .NET Core 微服务—API网关(Ocelot) 教程 [一]

    前言: 最近在关注微服务,在 eShop On Containers 项目中存在一个API网关项目,引起想深入了解下它的兴趣. 一.API网关是什么 API网关是微服务架构中的唯一入口,它提供一个单独 ...

  8. 在linux下修改文件夹机器子文件夹的权限

    使用命令:chmod 用法:chmod [选项]... 模式[,模式]... 文件... 或:chmod [选项]... 八进制模式 文件... 或:chmod [选项]... --reference ...

  9. 写给.NET开发者的Python教程(二):基本类型和变量

    从本文开始,我们就要正式了解Python的语法特性了,这章主要介绍基本类型和变量,开始之前先介绍下Python中的标准输入输出. 标准输入输出 前文举过TwoSum问题的例子,但是没有讲到标准输入输出 ...

  10. [spring cloud] -- 核心篇

    核心功能: 分布式/版本化配置 服务注册合发现 服务路由 服务和服务之间的调用 负载均衡 断路器 分布式消息传递 ...... 技术体系 组件 服务注册与发现组件:Eureka.Zookeeper和C ...