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

如何在FluentValidation中不使用WithMessage方法添加错误消息

解决方案

FluentValidation完全支持不调用WithMessage()就给ValidationResult添加自定义错误,常用的实现方式有以下两种:

1. 直接操作ValidationResult实例

适合在校验逻辑执行完毕后,基于独立的业务条件追加错误的场景。你可以直接修改ValidationResult的Errors集合,不需要依赖原有校验规则:

// 先执行原有校验逻辑
var validator = new YourModelValidator();
var result = validator.Validate(yourModelInstance);

// 独立业务条件判断,和待校验类属性无关
if (DateTime.Now.DayOfWeek == DayOfWeek.Monday)
{
    // 第一个参数为关联属性名,不需要关联的话传空字符串即可
    result.Errors.Add(new ValidationFailure("", "周一不允许提交数据"));
}

2. 在校验器内通过Custom方法全局注入校验逻辑

适合自定义逻辑和校验器绑定的场景,不需要绑定到特定属性,也不需要调用WithMessage:

public class YourModelValidator : AbstractValidator<YourModel>
{
    public YourModelValidator()
    {
        // 原有属性校验规则
        RuleFor(x => x.Age).GreaterThan(18);

        // 全局自定义校验逻辑
        Custom(model =>
        {
            // 你的自定义条件,不需要访问model属性也可以
            if (/* 业务判断条件 */)
            {
                return new ValidationFailure("", "自定义全局错误消息");
            }
            return null;
        });
    }
}

调用validator.Validate()方法后,返回的结果会自动包含上述自定义错误。

注意事项

如果不需要将错误绑定到特定的模型属性,ValidationFailure的第一个参数(属性名)传空字符串即可,适合全局提示类的错误场景。

内容的提问来源于stack exchange,提问作者john-lenon-dos-reis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 16:45:03