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("姓名长度不符!");
}
}
要点:
- 必须继承于AbstractValidator
- AbstractValidator<需要验证的类>
- 在构造函数中添加验证
- RuleFor是对某一个属性添加验证规则
配置
先上图:
- AddFluentValidation必须在AddMvc之后
- 方法里面可以进行想要的配置,比如关掉自带的验证器
- 如果验证器较多的话建议使用这种程序集注入的方式
当然还有另外一种注入方式只是比较麻烦,看图:
这样也是可以的,不过比较麻烦。。。
使用
开头说了,这东西方便好用快捷省心,所以根本不需要在控制器中进行额外的使用,一切从简!
结果:
验证器中对Surname属性进行了不为空&长度大于2&长度小于10的限制,那么来看结果:
当我们点击提交:
看来是成功了!界面很丑,请不要吐槽。。。
自定义验证过程: