属性标签
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/validation?view=aspnetcore-2.1
- [CreditCard]:验证属性是否具有信用卡格式。
- [Compare]:验证某个模型中的两个属性是否匹配。
- [EmailAddress]:验证属性是否具有电子邮件格式。
- [Phone]:验证属性是否具有电话格式。
- [Range]:验证属性值是否落在给定范围内。
- [RegularExpression]:验证数据是否与指定的正则表达式匹配。
- [Required]:将属性设置为必需属性。
- [StringLength]:验证字符串属性是否最多具有给定的最大长度。
- [Url]:验证属性是否具有 URL 格式。
FluentValidation
- 验证逻辑与业务逻辑分离
- 灵活, 功能强大
Fluent API, Lambda表达式 - 安装Nuget包:
FluentValidation
FluentValidation.AspNetCore - 为Resource配置验证器
继承于AbstractValidator
public class PostResourceValidator:AbstractValidator<PostResource>
{
public PostResourceValidator()
{
RuleFor(x => x.Author)
.NotNull()
.WithName("作者")
.WithMessage("{PropertyName}是必填的")
.MaximumLength(20)
.WithMessage("{PropertyName}的最大长度是{MaxLength}");
}
}
- 注册到容器: services.AddTransient<>()
//注册FluentValidator
services.AddTransient<IValidator<PostResource>, PostResourceValidator>();