fluentvalidation模型验证

 

转自:Fluentvalidation的基本使用 - kelelipeng - 博客园 (cnblogs.com)

前言:

fluentvalidation用于构建强类型验证规则的流行.NET库。方便好用快捷省心!!!

本文按照官方文档进行试验,如果深(不)入(看)的(我)研(写)究(的)请去官网:https://fluentvalidation.net/

相关包:

核心:FluentValidation

.net core:FluentValidation.AspNetCore

.net::FluentValidation.Mvc5/FluentValidation.WebApi

本文使用.net core所以只安装FluentValidation.AspNetCore即可

模型与验证器:

准备一个需要的模型:

    public class Customer

    {

        public int Id { get; set; }

        public string Surname { get; set; }

        public string Forename { get; set; }

        public decimal Discount { get; set; }

        public string Address { get; set; }

创建验证器,对验证类进行验证

    public class CustomerValidation:AbstractValidator<Customer>

    {

        public CustomerValidation()

        {

            RuleFor(customer => customer.Surname)

              //不为空

                .NotNull()

               //最小/最大长度

                .MinimumLength(2)

                .MaximumLength(10)

               //错误提示信息

                .WithMessage("姓名长度不符!");

        }

}

要点:

  1. 必须继承于AbstractValidator
  2. AbstractValidator<需要验证的类>
  3. 在构造函数中添加验证
  4. RuleFor是对某一个属性添加验证规则

配置

先上图:

 

 

  1. AddFluentValidation必须在AddMvc之后
  2. 方法里面可以进行想要的配置,比如关掉自带的验证器
  3. 如果验证器较多的话建议使用这种程序集注入的方式

当然还有另外一种注入方式只是比较麻烦,看图: 

 

这样也是可以的,不过比较麻烦。。。

使用

开头说了,这东西方便好用快捷省心,所以根本不需要在控制器中进行额外的使用,一切从简!

 

结果:     

验证器中对Surname属性进行了不为空&长度大于2&长度小于10的限制,那么来看结果:

 

当我们点击提交:

 

看来是成功了!界面很丑,请不要吐槽。。。

自定义验证过程:

 

 

请注意:在 PreValidate 方法内可以自定义验证过程,如果验证不通过请添加一个错误,管道不会因为返回的是 false 而终止。

 

posted @ 2021-12-02 09:52  vba是最好的语言  阅读(189)  评论(0编辑  收藏  举报