(.NET 6.0使用FluentValidation如下 )
https://blog.csdn.net/zhaoxingyu999/article/details/122349101?fromshare=blogdetail&sharetype=blogdetail&sharerId=122349101&sharerefer=PC&sharesource=zhaoxingyu999&sharefrom=from_link
从.NET 6.0 升级到了.NET 10.0 发现FluentValidation 用不起了
FluentValidation.AspNetCore包已弃用

下面是注入方法和实现自动验证的方法:
用到的包有:
FluentValidation.DependencyInjectionExtensions
SharpGrip FluentValidation AutoValidation

实现逻辑如下:
csharp
using FluentValidation;
//第三方自动验证包
using SharpGrip.FluentValidation.AutoValidation.Mvc.Extensions;
public void ConfigureServices(IServiceCollection services)
{
//扫描当前程序集中的所有Fluent验证器实现类并将它们注册到依赖注入容器中
services.AddValidatorsFromAssembly(typeof(Program).Assembly, includeInternalTypes: true);
//第三方 自动验证方法
services.AddFluentValidationAutoValidation(configuration =>
{
configuration.OverrideDefaultResultFactoryWith<CustomResultFactory>();
});
}
修改FluentValidation响应格式
csharp
public class CustomResultFactory : IFluentValidationAutoValidationResultFactory
{
/// <summary>
/// 修改FluentValidation默认验证响应格式
/// </summary>
/// <param name="context"></param>
/// <param name="validationProblemDetails"></param>
/// <returns></returns>
public IActionResult CreateActionResult(ActionExecutingContext context, ValidationProblemDetails? validationProblemDetails)
{
// 获取第一条错误消息
var firstErrorMessage = context.ModelState
.Values
.SelectMany(v => v.Errors)
.FirstOrDefault()?
.ErrorMessage ?? "Validation failed";
return new BadRequestObjectResult(new ResponseResult
{
code = 400,
msg = firstErrorMessage,
datas = null,
success = false
});
}
}
实现自动验证:
SharpGrip FluentValidation AutoValidation 是
FluentValidation(v10+)库的扩展,使 MVC 控制器和最小 API(端点)能够实现自动异步验证。 库
FluentValidation.AspNetCore 已不再维护且不支持。因此,该库提供的自动验证支持已不再提供。
该库重新引入了MVC控制器的功能,并引入了对最小API(端点)的自动验证。它使开发者能够轻松地在项目中实现自动验证。


手动验证实现逻辑:
csharp
[HttpPost("save")]
public async Task<IActionResult> Save([FromBody] TriggerDto req, IValidator<TriggerDto> validator)
{
validator.ValidateAndThrow(req);//并抛出异常
validator.Validate(req);//仅验证
return Ok(await _service.Save(req));
}
三方库:https://github.com/SharpGrip/FluentValidation.AutoValidation