Asp.Net Core 6+FluentValidation.AspNetCore插件校验入参
Asp.Net Core 6+FluentValidation.AspNetCore插件校验入参
step 1:添加包
dotnet add package FluentValidation.AspNetCore
step 2:注入
builder.Services.AddControllers().AddFluentValidation(fv => { fv.RegisterValidatorsFromAssemblyContaining(); });
step 3:校验失败,数据处理
services.Configure(options => { options.InvalidModelStateResponseFactory = (context) => { var errors = context.ModelState.Values.SelectMany(x => x.Errors.Select(p => p.ErrorMessage)).ToList(); return Result.Ok(string.Join(",", errors)); }; });
step 4:Result 类
using Newtonsoft.Json;
using Microsoft.AspNetCore.Mvc;
public class Result : IActionResult { private string _error; public Result(string error) { _error= error; } public async Task ExecuteResultAsync(ActionContext context) { context.HttpContext.Response.StatusCode = 200; context.HttpContext.Response.ContentType = "application/json"; object data= new {code=400400,seccess=false,message=_error,timesTamp=DateTime.UtcNow.ToFileTimeUtc}; string paramJson = JsonConvert.SerializeObject(data); await context.HttpContext.Response.Body.WriteAsync(Encoding.UTF8.GetBytes(paramJson)); } public static IActionResult Ok(string error) { IActionResult actionResult = new ValidationResult(error); return actionResult; }
}
step:5: AddValidator校验类
public class AddValidator : AbstractValidator{ public AddValidator() { RuleFor(x => x.ID).NotEqual(0).WithMessage("ID不能为空0"); RuleFor(x => x.UserName).NotEmpty().WithMessage("用户不能为空"); RuleFor(x => x.PassWord).NotEmpty().WithMessage("密码不能为空"); } }
官网文档地址:https://docs.fluentvalidation.net/