Custom Error Codes
A custom error code can also be associated with validation rules by calling the WithErrorCode
method:
public class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(person => person.Surname).NotNull().WithErrorCode("ERR1234");
RuleFor(person => person.Forename).NotNull();
}
}
The resulting error code can be obtained from the ErrorCode
property on the ValidationFailure
:
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}");
}
The output would be:
Property: Surname Error Code: ERR1234
Property: Forename Error Code: NotNullValidator
ErrorCode and Error Messages
The ErrorCode
is also used to determine the default error message for a particular validator. At a high level:
- The error code is used as the lookup key for an error message. For example, a
NotNull()
validator has a default error code ofNotNullValidator
, which used to look up the error messages from theLanguageManager
. See the documentation on localization. - If you provide an error code, you could also provide a localized message with the name of that error code to create a custom message.
- If you provide an error code but no custom message, the message will fall back to the default message for that validator. You're not required to add a custom message.
- Using
ErrorCode
can also be used to override the default error message. For example, if you use a customMust()
validator, but you'd like to reuse theNotNull()
validator's default error message, you can callWithErrorCode("NotNullValidator")
to achieve this result.