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.");
    }
}