请求的校验
RuleFor(x => x.Property).Must(property =>
{
// 自定义验证逻辑
return property == "有效值";//里面是一个委托
});
//复杂的用方法组,简单的用lambda(会自动缓存)
示例一:
RuleFor(p => p.Age).Must(age => age >= 18);
示例二:
RuleFor(r => r.EndDate)
.Must((reservation, endDate) => endDate > reservation.StartDate)
.WithMessage("结束日期必须晚于开始日期");
示例三:
RuleFor(u => u.Username)
.MustAsync(async (username, cancellation) =>
await _userService.IsUsernameAvailableAsync(username))
.WithMessage("用户名已被占用");
public class OrderValidator : AbstractValidator<Order>
{
public OrderValidator()
{
RuleFor...
}
}
//把上面的校验服务注册,之后会自动校验
builder.Services.AddControllers()
.AddFluentValidation(fv =>
{
fv.RegisterValidatorsFromAssemblyContaining<PersonValidator>();
// 或者使用以下方式注册所有验证器
// fv.RegisterValidatorsFromAssembly(Assembly.GetExecutingAssembly());
//fv.AutomaticValidationEnabled = false;//自动触发改手动触发
});
//第二种写法
builder.Services.AddControllers()
.AddFluentValidation(fv =>
{
fv.RegisterValidatorsFromAssemblyContaining<PersonValidator>();
// 或者使用以下方式注册所有验证器
// fv.RegisterValidatorsFromAssembly(Assembly.GetExecutingAssembly());
});
[HttpPost]//手动校验
public async Task<IActionResult> Create(
[FromBody] Person person,
[FromServices] IValidator<Person> validator)
{
var validationResult = await validator.ValidateAsync(person);
if (!validationResult.IsValid)
{
validationResult.AddToModelState(ModelState);
return BadRequest(ModelState);
}
// 处理有效数据...
return Ok();
}
静,静,静

浙公网安备 33010602011771号