日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在asp.net core中使用的验证框架FluentValidation

發布時間:2023/12/4 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在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的模型驗證如出一轍。

[ApiController][Route("[controller]")]public class HomeController : ControllerBase{private readonly ILogger<HomeController> _logger;private?readonly?IValidator<Person>?_validator;public HomeController(ILogger<HomeController> logger, IValidator<Person> validator){_validator = validator;_logger = logger;}[HttpPost("/addperson")]public IActionResult AddPerson([FromBody] Person person){_logger.LogInformation("添加Person");if (ModelState.IsValid){return Ok("驗證成功后,假裝這里作了后端業務處理");}_logger.LogError("驗證Person失敗");return BadRequest("person沒有驗證通過");}}

測試傳入數據:

{"id":0,"birthday":"2021-03-29T07:00:18.061Z","idCard":"","name":"","email":"axzxs2001163.com","tel":"1345346714","address":{"country":"中國","province":"山西","city":"","county":"古城","address":"","postcode":"04600"} }

結果:

{"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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。