进行接口请求的时候难免会对请求字段进行验证,验证对象的所有字段的值是否合乎要求,如进行非空检测,长度检测等等。在有些情况下使用框架自带的注解可能满足不了我们的需求,我们需要自定义一些注解类型,下面一起学习一下自定义注解的使用

1.自定义注解

定义一个注解类型的类,继承于ValidationAttribute

ValidationAttribute

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;namespace Test.Attributes
{public class CheckValueType : ValidationAttribute{protected override ValidationResult IsValid(object value, ValidationContext validationContext){string number = Convert.ToString(value);double v;if (double.TryParse(number,out v)){return ValidationResult.Success;}return new ValidationResult("类型不匹配!请输入合法的整数或小数数据");}}
}

使用注解

     using Test.Attributes;[CheckValueType] public string 体温 { get; set; }

默认的一些注解

Required

用法示例

[Required(ErrorMessage="请填写名称")]

如果属性为null,"",或只包含空白字符,会引发异常(ModelState.IsValid会false)

RegularExpression

用法示例

[RegularExpression(pattern:@"^[1-9]\d*$",ErrorMessage ="请选择部门")]

上面的示例是正整数检测,其他常用正则表达式自行搜索

Compare

用来检测两个字段是否相等

示例

[Compare("NewPassword",ErrorMessage ="确认密码和新密码不一致,请检查")]

MaxLength

示例

[MaxLength(length:11,ErrorMessage ="请填写合法的手机号")]

当然手机号不可能是上面那种检测,这里只是示例

这个注解最常用在字符串上,不过神奇的是也可以用在数组上面,非常有趣

MinLength

和上面MaxLength一样

用来检测数组非空挺好用的,但是注意是无法用到List类型的属性上面的

Range

range除了能用来限定数字的使用范围以外,还可以用来限定其他类型!(当然一般正则表达式可能用的更多)

示例

[Range(0.0, 100, ErrorMessage = "请输入0.0到100的数字")]
[Range(0, 100, ErrorMessage = "请输入0到100的数字")]

因为构造函数包含3种

RangeAttribute(int32,int32)

RangeAttribute(double,double)

RangeAttribute(Type,string,string)

C#、net core、net5自定义实体注解相关推荐

  1. Java 校验注解的使用、自定义校验注解

    文章目录 一.引入依赖 二.基本校验 1. 常用校验注解 2. 自动校验 3. 代码中获取校验结果 三.嵌套校验 四.分组校验 五.单属性自定义校验规则 1. 功能:只能取枚举的值 六.多属性自定义联 ...

  2. 自定义的注解校验器的实现

    首先先学习一下注解,注解为我们在代码中添加信息提供了一种形式化的方法,使得我们在稍后的某个时刻可以方便地使用这些数据. 在日常的编码中我们一直都在使用注解,只是没有特别关注过,Java中内置了三种注解 ...

  3. slf4j注解log报错_SpringBoot自定义日志注解,用于数据库记录操作日志,你用过吗?...

    大家好,我是程序员7歌! 今天我将为大家讲解如何通过自定义注解记录接口访问日志.一般的开发中,有两种方式可以记录日志信息,第一种:把接口日志信息保存到日志文件中,第二种:把接口操作日志保存到数据库中, ...

  4. jsr-303 参数校验—自定义校验注解

    1.为什么要自定义? 通过上篇学习,了解到很多常用注解了,但是呢,总是有那么些需求.... 2.案例分析(手机号格式) 2.1.需要验证的实体 Bean public class LoginVo {@ ...

  5. 自定义依赖注解无效_SpringValidation用注解代替代码参数校验解析

    Spring Validation 概念 在原先的编码中,我们如果要验证前端传递的参数,一般是在接受到传递过来的参数后,手动在代码中做 if-else 判断,这种编码方式会带来大量冗余代码,十分的不优 ...

  6. JPA实体注解与hibernate主键生成策略

    JPA实体注解与hibernate主键生成策略 用hibernate注解开发项目,对于主键的生成策略有些模糊,下面是从新浪网里面看到的一篇关于hibernate注解以及主键生成策略的文章,值得一看: ...

  7. java 自定义注解 生成json_Java中如何创建自定义的注解

    前言 关于Java的注解,我一直在用,没有太搞明白它的原理,至于如何自定义一个注解,就更不明白了.其实参考的这篇文章,之前看过一遍,当时以为看懂了,但是最近在工作中去印证的时候,发现对注解还是不理解, ...

  8. Java中如何创建自定义的注解学习笔记(MD版)

    概要 Java中如何创建自定义的注解学习笔记(MD版). 博客 博客地址:IT老兵驿站. 前言 记得这篇笔记还是在泉州的龙玲酒店记录的,是一个周六的晚上,坐飞机从上海到泉州,从笔记中能勾起一些旅游的回 ...

  9. Spring MVC代码实例系列-06:Spring MVC配置Hibernate-Validator以及自定义校验注解

    超级通道 :Spring MVC代码实例系列-绪论 本章主要记录,如何在Spring MVC中添加Hibernate-Validator以及自定义校验注解.本章主要涉及的技术点有: javax.val ...

  10. SpringBoot conditional注解和自定义conditional注解使用

    conditional注解是Springboot starter的基石,自动装配的时候会根据条件确定是否需要注入这个类. 含义:基于条件的注解. 作用:根据是否满足某个特定条件来决定是否创建某个特定的 ...

最新文章

  1. [云炬创业基础笔记] 第四章测试17
  2. oracle一个月内的数据,oracle 查询前一小时、一天、一个月、一年的数据
  3. 【RTOS】基于V7开发板的uCOS-III,uCOS-II,RTX4,RTX5,FreeRTOS原版和带CMSIS-RTOS V2封装层版全部集齐...
  4. web中hasmoreelements_Web开发模式【Mode I 和Mode II的介绍、应用案例】
  5. maven ${path.separator}
  6. android学习笔记---发送状态栏通知
  7. 开始菜单跑到左边去了_你的车“跑偏”吗?也许是你的方向盘本身就不正
  8. 解析百度Apollo自动驾驶平台
  9. 中间人攻击 - 攻防
  10. app开发的三大技术框架
  11. 2022年凯立德移动导航系统C-Car版 绝对通用车载
  12. ElasticSearch的REST APIs 之 索引的状态管理
  13. 小红书后台开发岗面试经历复盘
  14. webstorm自定义文件模板
  15. IDEA Maven遇到的问题 wating for maven import completionomitted for duplicate jar
  16. 【常用传感器】LCD1602液晶工作原理详解及例程代码
  17. 光盘复制-DVD光盘复制格式剖析
  18. 代理服务器介绍及种类划分
  19. torch中manual_seed的作用
  20. javascript实用例子

热门文章

  1. Linux内核多线程(四)
  2. android java程序中调用shell命令
  3. 具有system权限的进程无法访问sdcard
  4. 曲线积分和曲面积分及其几何应用、物理应用
  5. micropython websocket_通过websocket登录ESP32
  6. 苹果内容拦截器在哪_苹果全家桶,真的有别人说的那么香吗?
  7. java时间往后一天_往后余生,不能再陪你了
  8. 华北五省计算机应用大赛2018,2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛举行...
  9. 三条中线分的六个三角形_数学中三角形的“五心”你会了吗?教你马上学会。(中考生必看)...
  10. 图:昌荣传播2010夏令营拉歌大赛胜利闭幕