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/

相关