ASP.NET Core Web API Interview Question #40
What is custom validation in a Web API?
DTOs, Model Binding, Validation & API Responses Junior Beginner
Quick Interview Answer
Custom validation handles rules that cannot be expressed adequately with simple built-in attributes. A model can implement IValidatableObject, a project can define a custom ValidationAttribute, or application-level validation can run in a service or validation component.
Detailed Explanation
Custom validation handles rules that cannot be expressed adequately with simple built-in attributes. A model can implement IValidatableObject, a project can define a custom ValidationAttribute, or application-level validation can run in a service or validation component.
Rules involving database state, authorization, or complex domain behavior generally belong outside attribute classes so dependencies and business logic remain explicit.
Code Example
public sealed class DateRangeRequest : IValidatableObject
{
public DateTime From { get; init; }
public DateTime To { get; init; }
public IEnumerable<ValidationResult> Validate(
ValidationContext validationContext)
{
if (To < From)
yield return new ValidationResult(
"To must be on or after From.");
}
}