Setting the Severity Level¶
Given the following example that validates a Person
object:
public class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(person => person.Surname).NotNull();
RuleFor(person => person.Forename).NotNull();
}
}
By default, if these rules fail they will have a severity of Error
. This can be changed by calling the WithSeverity
method. For example, if we wanted a missing surname to be identified as a warning instead of an error then we could modify the above line to:
RuleFor(x => x.Surname).NotNull().WithSeverity(Severity.Warning);
In version 9.0 and above a callback can be used instead, which also gives you access to the item being validated:
RuleFor(person => person.Surname).NotNull().WithSeverity(person => Severity.Warning);
In this case, the ValidationResult
would still have an IsValid
result of false
. However, in the list of Errors
, the ValidationFailure
associated with this field will have its Severity
property set to Warning
:
var validator = new PersonValidator();
var result = validator.Validate(new Person());
foreach (var failure in result.Errors)
{
Console.WriteLine($"Property: {failure.PropertyName} Severity: {failure.Severity}");
}
The output would be:
Property: Surname Severity: Warning
Property: Forename Severity: Error
By default, the severity level of every validation rule is Error
. Available options are Error
, Warning
, or Info
.
To set the severity level globally, you can set the Severity
property on the static ValidatorOptions
class during your application’s startup routine:
ValidatorOptions.Global.Severity = Severity.Info;
This can then be overridden by individual rules.