在asp.net core中使用的验证框架FluentValidation
生活随笔
收集整理的這篇文章主要介紹了
在asp.net core中使用的验证框架FluentValidation
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
FluentValidation在asp.net core中怎么使用?
先安裝包。
Install-Package?FluentValidation.AspNetCore
和上一篇的實體類和驗證類一樣。
實體類:
public class Person {public int Id { get; set; }public string Name { get; set; }public string Tel { get; set; }public string Email { get; set; }public DateTime Birthday { get; set; }public string IDCard { get; set; }public PersonAddress Address { get; set; } } public class PersonAddress {public string Country { get; set; }public string Province { get; set; }public string City { get; set; }public string County { get; set; }public string Address { get; set; }public string Postcode { get; set; } }驗證類:
/// <summary> /// Person驗證 /// </summary> public class PersonValidator : AbstractValidator<Person> {public PersonValidator(){RuleFor(p => p.Name).NotNull().NotEmpty();RuleFor(p => p.Email).NotNull().EmailAddress();RuleFor(p => p.Birthday).NotNull();RuleFor(p => p.IDCard).NotNull().When(p => (DateTime.Now > p.Birthday.AddYears(1))).WithMessage(p => $"出生日期為{p.Birthday},現在時間為{DateTime.Now},大于一歲,CardID值必填!").NotEmpty().When(p => (DateTime.Now > p.Birthday.AddYears(1))).WithMessage(p => $"出生日期為{p.Birthday},現在時間為{DateTime.Now},大于一歲,CardID值必填!").Length(18).When(p => (DateTime.Now > p.Birthday.AddYears(1)));RuleFor(p => p.Tel).NotNull().Matches(@"^(\d{3,4}-)?\d{6,8}$|^[1]+[3,4,5,8]+\d{9}$");RuleFor(p => p.Address).NotNull();RuleFor(p => p.Address).SetValidator(new PersonAddressValidator());} } /// <summary> /// Person Address驗證 /// </summary> public class PersonAddressValidator : AbstractValidator<PersonAddress> {public PersonAddressValidator(){RuleFor(a => a.Country).NotNull().NotEmpty();RuleFor(a => a.Province).NotNull().NotEmpty();RuleFor(a => a.City).NotNull().NotEmpty();RuleFor(a => a.County).NotNull().NotEmpty();RuleFor(a => a.Address).NotNull().NotEmpty();RuleFor(a => a.Postcode).NotNull().NotEmpty().Length(6);} }Starup.cs
public void ConfigureServices(IServiceCollection services) {services.AddControllers().AddFluentValidation();services.AddTransient<IValidator<Person>, PersonValidator>();services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo { Title = "FluentValidationWebDemo01", Version = "v1" });}); }這里和asp.net core mvc的模型驗證如出一轍。
測試傳入數據:
結果:
{"type": "https://tools.ietf.org/html/rfc7231#p-6.5.1","title": "One or more validation errors occurred.","status": 400,"traceId": "00-21fffead3f693fdf9156d796baf4e4ef-a7d39f85acf57cff-00","errors": {"Tel": ["'Tel' 的格式不正確。"],"Name": ["'Name' 不能為空。"],"Email": ["'Email' 不是有效的電子郵件地址。"],"Address.City": ["'City' 不能為空。"],"Address.Address": ["'Address' 不能為空。"],"Address.Postcode": ["'Postcode' 必須是 6 個字符,您輸入了 5 字符。"]} }還是那句話,FluentValidation提供了更靈活,完強大的驗證方式
總結
以上是生活随笔為你收集整理的在asp.net core中使用的验证框架FluentValidation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NET问答: 重写了 Equals,还有
- 下一篇: 【EFCORE笔记】异步查询工作原理注释