Validation des données en C# (.NET) avec FluentValidation : guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Validation des données en C# (.NET) : l'outil puissant FluentValidation



La validation des données est l'un des aspects clés du développement d'applications sécurisées et fiables en C# (.NET). Que vous créiez une API web avec ASP.NET Core, une application de bureau avec WPF ou un utilitaire console, la vérification des données d'entrée permet d'éviter les erreurs, les injections SQL et un fonctionnement incorrect du système. Dans cet article, nous allons examiner en détail la bibliothèque FluentValidation — un outil moderne, flexible et largement utilisé pour la validation dans l'écosystème .NET.



Qu'est-ce que FluentValidation et pourquoi en a-t-on besoin ?



FluentValidation est une bibliothèque open-source pour .NET qui permet de décrire les règles de validation des objets à l'aide d'une interface fluide (chaîne d'appels de méthodes). Contrairement aux attributs intégrés DataAnnotations, FluentValidation :



  • Sépare la logique de validation du modèle de données — les règles sont placées dans des classes de validation distinctes.
  • Prend en charge les scénarios complexes — vérifications conditionnelles, règles personnalisées, validations inter-propriétés.
  • S'intègre avec ASP.NET Core — vérifie automatiquement les modèles dans les contrôleurs.
  • Facilite les tests — les validateurs peuvent être facilement isolés et couverts par des tests unitaires.


Installation et configuration



Pour commencer, installez le package via le gestionnaire de packages NuGet ou l'interface CLI .NET :



dotnet add package FluentValidation


Si vous utilisez ASP.NET Core, ajoutez dans Program.cs (ou Startup.cs) l'enregistrement des validateurs :



builder.Services.AddValidatorsFromAssemblyContaining<MyValidator>();


Création d'un validateur simple



Supposons que nous ayons un modèle d'utilisateur :



public class User{    public int Id { get; set; }    public string Name { get; set; }    public string Email { get; set; }    public int Age { get; set; }}


Créons un validateur héritant de AbstractValidator<User> :



using FluentValidation;

public class UserValidator : AbstractValidator<User>{ public UserValidator() { RuleFor(user => user.Name) .NotEmpty().WithMessage("Le nom est obligatoire") .Length(2, 50).WithMessage("Le nom doit contenir entre 2 et 50 caractères");

RuleFor(user => user.Email) .NotEmpty().WithMessage("L'email est obligatoire") .EmailAddress().WithMessage("Format d'email invalide");

RuleFor(user => user.Age) .InclusiveBetween(18, 120).WithMessage("L'âge doit être compris entre 18 et 120 ans"); }}


On peut maintenant effectuer la validation :



var validator = new UserValidator();var user = new User { Name = "A", Email = "invalide", Age = 15 };var result = validator.Validate(user);

if (!result.IsValid){ foreach (var error in result.Errors) { Console.WriteLine($"Erreur dans {error.PropertyName}: {error.ErrorMessage}"); }}


Fonctionnalités avancées



1. Règles personnalisées (Custom validators)



Vous pouvez écrire votre propre logique de validation avec la méthode Must ou créer une méthode séparée :



RuleFor(user => user.Name)    .Must(name => !string.IsNullOrEmpty(name) && name.All(char.IsLetter))    .WithMessage("Le nom ne doit contenir que des lettres");


2. Validation conditionnelle



Vérifiez les propriétés uniquement si certaines conditions sont remplies :



RuleFor(user => user.Email)    .NotEmpty().When(user => user.Age > 18)    .WithMessage("L'email est obligatoire pour les utilisateurs adultes");


3. Validation inter-propriétés



Comparez les valeurs de différentes propriétés :



RuleFor(user => user.Password)    .Equal(user => user.ConfirmPa                    

Recommendations