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<AddValidator>();
});
step 3:校验失败,数据处理
services.Configure<ApiBehaviorOptions>(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<AddModel>
{
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/

浙公网安备 33010602011771号