FluentValidation 自定义错误代码 custom error codes

通过调用 WithErrorCode 我们可以把自定义的错误代码跟验证规则关联在一起

public class PersonValidator : AbstractValidator<Person>
{
    public PersonValidator()
    {
        RuleFor(person => person.Surname).NotNull().WithErrorCode("ERR1234");
        RuleFor(person => person.Forename).NotNull();
    }
}

同样的我们也可以通过 ValidationFailure来获取到ErrorCode

class Program
{
    static void Main(string[] args)
    {
        var validator = new PersonValidator();
        var result = validator.Validate(new Person());
        foreach (var failure in result.Errors)
        {
            Console.WriteLine($"Property: {failure.PropertyName} Error Code: {failure.ErrorCode}");
        }
    }
}

上面的代码将出输如下的结果

Property: Surname Error Code: ERR1234
Property: Forename Error Code: NotNullValidator

错误代码和错误消息 ErrorCode and Error Messages

Error code 是用来决定验证器的默认错误消息。 从高级别来看

  • 错误代码被当作key用来查找错误消息, 内部使用 LanguageManager 来获得默认的错误消息
  • 如果您提供错误代码,您还可以提供带有该错误代码名称的本地化消息以创建自定义消息。
  • 如果您提供错误代码但没有自定义消息,则该消息将返回到该验证器的默认消息。您不需要添加自定义消息。
  • 还可用于覆盖默认错误消息。例如,如果您使用自定义验证器,但重用用验证器的默认错误消息,可以使用 WithErroCode("NotNullValidator")

示例:

    RuleFor(person => person.Surname).NotNull().WithErrorCode("NotEmptyValidator");

    //错误消息从 'Surname' 不能为Null。 变成了 'Surname' 不能为空。
最近更新的
...