开源博客项目Blog .NET Core源码学习(7:FluentValidation使用浅析)

  开源博客项目Blog .NET使用FluentValidation模块定义数据验证项,具体而言,是在App.Application项目中定义验证类,设置验证规则,同时在App.Framwork项目中基于FluentValidation.AspNetCore包设置ASP.NET验证管道自动验证。
  App.Application项目中总共定义了六个验证类,使用的都是FluentValidation内置的验证类,详细说明如下:

序号 验证类名称 验证对象类 命名空间 使用的验证方式
1 ArticleValidator ArticleInputDto App.Application.Blog.Validators 1)NotEmpty,非empty验证; 2)Length,字符串长度范围验证; 3)NotNull,非null验证; 4)Must,自定义验证,本类中主要验证集合属性必须包含元素。
2 LeavemsgValidator CommentInputDto App.Application.Blog.Validators 1)NotEmpty,非empty验证; 2)MaximumLength,字符串最大长度验证。
3 NoticeValidator NoticeInputDto App.Application.Blog.Validators 1)NotEmpty,非empty验证; 2)MaximumLength,字符串最大长度验证。
4 ReplyValidator ReplyInputDto App.Application.Blog.Validators 1)NotEmpty,非empty验证; 2)MaximumLength,字符串最大长度验证; 3)NotEqual,验证属性不等于指定内容。
5 TagsValidator TagsInputDto App.Application.Blog.Validators 1)NotEmpty,非empty验证; 2)MaximumLength,字符串最大长度验证。
6 SysPermissionValidator SysPermissionInputDto App.Application.SysManager.Validators 1)NotEmpty,非empty验证; 2)Must,自定义验证,本类中主要验证集合属性必须包含元素。

  App.Framwork项目的命名空间App.Framwork.DataValidation.Extensions中定义了扩展函数AddValidation,在该函数中主要实现三方面的功能:
  1)设置启用基于ASP.NET验证管道的自动验证,主要是调用FluentValidation.AspNetCore中的FluentValidationMvcExtensions.AddFluentValidation扩展函数实现;
  2)遍历所有程序集中的验证类并注册,项目中通过查找程序集中所有派生自IValidator接口的非抽象类获取所有验证类,然后调用TryAddTransient逐个注册验证类。根据前一篇文章的介绍,其实可以引用FluentValidation.DependencyInjectionExtensions包,然后调用AddValidatorsFromAssemblyContaining函数自动枚举注册验证类;
  3)设置加入全局过滤器,所有设置了IgnoreValidationAttribute特性的函数均忽略验证。

  最后在App.Hosting项目的Program文件中调用扩展函数AddValidation启用自动验证、注册验证类。

参考文献:

1https://gitee.com/miss_you/Blog

2https://www.donet5.com/Home/Doc

3https://docs.fluentvalidation.net/en/latest/index.html#

相关推荐
哦哦~92110 天前
AI 赋能 CFD :从 Fluent 仿真到物理信息机器学习的智能流体工程实战
人工智能·机器学习·cfd·fluent
ChaITSimpleLove10 天前
深入解析 ASP.NET Core Options 模式:IOptions、IOptionsSnapshot 与 IOptionsMonitor 实战指南
asp.net core·snapshot·依赖注入di·options模式·ioptions·ioptionsmonitor·配置热更新
医疗信息化王工11 天前
医院自律端系统——预警处置模块全栈实战(ASP.NET Core + Vue3 + Quartz 定时调度)
mysql·postgresql·vue·asp.net core·quartz
Esofar1 个月前
Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施
c#·ddd·asp.net core·cqrs·dddify·clean architecture
CSharp精选营1 个月前
.NET 8 Web开发入门(三):解构引擎——依赖注入(DI)与中间件管道
中间件·asp.net core·依赖注入·ioc容器·请求管道·服务生命周期
深山老林.2 个月前
第15章:使用重叠和动态网格
fluent
医疗信息化王工2 个月前
基于ASP.NET Core的医院输血审核系统设计与实现
后端·mvc·asp.net core·输血审核
医疗信息化王工2 个月前
基于ASP.NET Core的住院日志统计系统设计与实现
后端·layui·asp.net core·npoi·dapper
无风听海3 个月前
.NET10之HttpContext.RequestServices 深入解析
.net·asp.net core
硅基喵3 个月前
聊聊 ASP.NET Core 中间件和过滤器的区别
asp.net core