You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FluentValidation校验同一模型中两个属性的大小关系

实现方案

你可以通过FluentValidation的跨属性校验能力实现该需求,有两种常用实现方式:

方式1:使用内置比较规则(推荐)

直接调用GreaterThanOrEqualTo方法传入关联属性即可,写法简洁可读性高,完整校验类代码如下:

public class DocPropertyValidator: AbstractValidator<DocProperty>    
{
    public DocPropertyValidator()
    {
        RuleFor(a => a.Size).Must(x => x < 1).WithMessage("Invalid Size!");
        RuleFor(a => a.Volume).Must(x => x < 1).WithMessage("Invalid Volume!");            
        // 新增跨字段校验规则
        RuleFor(a => a.Volume)
            .GreaterThanOrEqualTo(a => a.Size)
            .WithMessage("Invalid case, volume cannot be less then Size.");
    }
}

方式2:使用Must重载实现自定义逻辑

如果后续需要扩展更复杂的判断逻辑,可以使用Must的重载方法直接访问当前校验的模型实例,新增规则代码如下:

RuleFor(a => a.Volume)
    .Must((model, volume) => volume >= model.Size)
    .WithMessage("Invalid case, volume cannot be less then Size.");

两种方式效果完全一致,无性能差异。

内容的提问来源于stack exchange,提问作者user1765862

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:12:02