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
Esecuzione a matrici nei workflow di GitHub Action
Gestire il fallimento di uno step in un workflow di GitHub
Utilizzare la libreria EntityFrameworkCore.Exceptions per gestire le eccezioni di Entity Framework Core in modo tipizzato
Commentare una issue associata ad una pull request tramite un workflow di GitHub
Azure Functions e OpenAPI: la coppia perfetta!
Personalizzare le richieste con i rule set di Azure Front Door
Bypassare l'esecuzione di una GitHub Action su branch protetti
Utilizzare le Promise in Javascript - seconda parte
Log streaming di una Azure Container App
Utilizzare WordPress con Azure App Service
Real world .NET Architecture
Utilizzare il metodo reduce in JavaScript
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestire il breaking change di Entity Framework Core 7 con tabelle che usano identity e trigger
- Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Speciale Visual Studio 2013 e .NET Framework 4.5.1: One ASP.NET, Windows 8.1, Entity Framework 6