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

在FluentValidation自定义验证中添加自定义状态的方法咨询

在FluentValidation自定义验证规则中添加错误自定义状态

你可以使用AddFailure的重载方法,直接传入自定义状态参数。以下是修改后的代码示例:

RuleFor(x => x.MyField).Custom((myField, context) =>
{
    switch (myField)
    {
        // ... 其他case逻辑

        default:
            // 定义自定义状态,这里用包含项目标识和无效值的对象举例
            var customState = new { ItemId = context.InstanceToValidate.Id, InvalidValue = myField };
            context.AddFailure(
                propertyName: nameof(context.InstanceToValidate.MyField),
                errorMessage: $"Unexpected value for MyField",
                customState: customState
            );
            break;
    }
});

获取自定义状态

验证完成后,可从ValidationFailure对象的CustomState属性中取出设置的自定义状态,用于定位失败项目:

var validator = new YourModelValidator();
var validationResults = validator.ValidateMany(yourItemList); // 批量验证示例

foreach (var result in validationResults)
{
    foreach (var failure in result.Errors)
    {
        var state = failure.CustomState as dynamic;
        if (state != null)
        {
            // 根据自定义状态处理,比如记录失败项目ID
            Console.WriteLine($"项目ID {state.ItemId} 验证失败,无效值:{state.InvalidValue}");
        }
    }
}

注意事项

  • 自定义状态支持任意类型:可以是简单的字符串、数字,也可以是复杂对象,按需选择即可。
  • 批量验证场景下,建议在自定义状态中包含项目的唯一标识(如ID),方便快速定位失败项。

内容的提问来源于stack exchange,提问作者me.at.coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:47:35