FluentValidation 自定义错误代码 custom error codes
通过调用 WithErrorCode 我们可以把自定义的错误代码跟验证规则关联在一起
csharp
public class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(person => person.Surname).NotNull().WithErrorCode("ERR1234");
RuleFor(person => person.Forename).NotNull();
}
}同样的我们也可以通过 ValidationFailure来获取到ErrorCode
csharp
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}");
}
}
}上面的代码将出输如下的结果
shell
Property: Surname Error Code: ERR1234
Property: Forename Error Code: NotNullValidator错误代码和错误消息 ErrorCode and Error Messages
Error code 是用来决定验证器的默认错误消息。 从高级别来看
- 错误代码被当作key用来查找错误消息, 内部使用 LanguageManager 来获得默认的错误消息
- 如果您提供错误代码,您还可以提供带有该错误代码名称的本地化消息以创建自定义消息。
- 如果您提供错误代码但没有自定义消息,则该消息将返回到该验证器的默认消息。您不需要添加自定义消息。
- 还可用于覆盖默认错误消息。例如,如果您使用自定义验证器,但重用用验证器的默认错误消息,可以使用
WithErroCode("NotNullValidator")
示例:
csharp
RuleFor(person => person.Surname).NotNull().WithErrorCode("NotEmptyValidator");
//错误消息从 'Surname' 不能为Null。 变成了 'Surname' 不能为空。