Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

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 of NotNullValidator, which used to look up the error messages from the LanguageManager. 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 custom Must() validator, but you'd like to reuse the NotNull() validator's default error message, you can call WithErrorCode("NotNullValidator") to achieve this result.