FluentValidation è una libreria che ci permette di effettuare la validazione formale di una classe sfruttando un set di regole predefinite o regole custom che possiamo definire noi per i nostri specifici scopi. Tra le regole che questa libreria mette a disposizione, troviamo regole per validare campi obbligatori, range di numeri, date e molto altro ancora. Tra le regole che possiamo aggiungere noi ci sono quelle per validare formalmente un IBAN, un codice fiscale, una prartita iva e così via.
L'utilizzo di questa libreria prevede la creazione di una classe di validazione che esprime le regole per una specifica classe da validare. Una volta creata la classe di validazione dobbiamo invocare il suo metodo di validazione passando in input l'oggetto da validare. Questo metodo restituisce il risultato della validazione che possiamo poi usare per mandare un messaggio all'utente, sollevare eccezioni di business o altro ancora.
Definiamo innanzitutto una classe Person da validare.
public class Person {
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
}Successivamente definiamo la classe di validazione per Person. Per fare questo dobbiamo creare una classe che eredita da AbstractValidator<T> dove T è il tipo Person. Nel costruttore della classe specifichiamo le regole di validazione.
public class PersonValidator : AbstractValidator<Person> {
public PersonValidator() {
RuleFor(p => p.FirstName).NotNull();
RuleFor(p => p.LastName).NotNull();
}
}La classe PersonValidator espone il metodo Validate al quale pasiamo in input un'istanza dell'oggetto Person e che ritorna un oggetto di tipo ValidationResult. Questo oggetto contiene una proprietà IsValid , che specifica se la validazione è andata bene, e una proprietà Errors con la lista degli eventuali errori.
var person = new Person();
var validator = new PersonValidator();
var result = validator.Validate(person);
if(!results.IsValid) {
foreach (var error in result.Errors) {
Console.WriteLine($("{failure.PropertyName} invalid: {failure.ErrorMessage}");
}
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
DevSecOps per .NET: dalla teoria alla pratica
Integrare SQL Server in un progetto .NET Aspire
Managed deployment strategy in Azure DevOps
Supportare la sessione affinity di Azure App Service con Application Gateway
Selettore CSS :has() e i suoi casi d'uso avanzati
Utilizzare Container Queries nominali
Utilizzare Intersect e Except per filtrare set di dati in TSql
Il nuovo controllo Range di Blazor 9
Recuperare gli audit log in Azure DevOps
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Controllare la velocità di spostamento su una pagina HTML
Semplificare i deployment con le label in Azure Container App
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Gli oggetti CallOut di Expression Blend 4.0
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Sfruttare una CDN con i bundle di ASP.NET
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform
- Esaminare documenti XML con namespace utilizzando LINQ to XML


