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/