FluentValidation pour C# (.NET) : guide complet avec exemples

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

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

\n\n

FluentValidation est une bibliothèque populaire pour .NET, conçue pour construire des règles de validation d'objets métier strictes et lisibles. Contrairement aux attributs de validation intégrés (Data Annotations), FluentValidation propose une approche basée sur la séparation de la logique de validation et du modèle de données. Cela rend le code plus propre, plus testable et plus flexible.

\n\n

La bibliothèque utilise une "interface fluide" (Fluent Interface), ce qui permet de construire des chaînes de règles de validation à l'aide de la notation pointée. FluentValidation prend en charge des scénarios complexes : validations en cascade, règles conditionnelles, validateurs personnalisés, travail avec des listes et des objets imbriqués.

\n\n

Pourquoi FluentValidation est-elle nécessaire ?

\n
    \n
  • Séparation des responsabilités : Les règles de validation n'encombrent pas le modèle de données.
  • \n
  • Lisibilité : Les chaînes de règles sont faciles à lire et à maintenir.
  • \n
  • Flexibilité : Il est facile de créer des règles complexes, conditionnelles et composites.
  • \n
  • Testabilité : Les validateurs peuvent être testés comme des classes ordinaires.
  • \n
  • Intégration : S'intègre parfaitement avec ASP.NET Core, MVC, Web API et d'autres frameworks.
  • \n
\n\n

Installation de FluentValidation

\n\n

L'installation de la bibliothèque se fait via le gestionnaire de packages NuGet. Exécutez l'une des commandes suivantes dans la console du gestionnaire de packages ou dans le terminal .NET CLI :

\n\n
// Installation via Package Manager Console\nInstall-Package FluentValidation\n\n// Installation via .NET CLI\ndotnet add package FluentValidation
\n\n

Pour l'intégration avec ASP.NET Core, un package supplémentaire est nécessaire :

\n\n
dotnet add package FluentValidation.AspNetCore
\n\n

Démarrage rapide : exemple de code

\n\n

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

\n\n
public class User\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public string Email { get; set; }\n    public int Age { get; set; }\n    public string Password { get; set; }\n    public string ConfirmPassword { get; set; }\n}
\n\n

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

\n\n
using FluentValidation;\n\npublic class UserValidator : AbstractValidator<User>\n{\n    public UserValidator()\n    {\n        RuleFor(user => user.Name)\n            .NotEmpty().WithMessage("Le nom est obligatoire")\n            .Length(2, 50).WithMessage("Le nom doit contenir entre 2 et 50 caractères");\n\n        RuleFor(user => user.Email)\n            .NotEmpty().WithMessage("L'email est obligatoire")\n            .EmailAddress().WithMessage("Format d'email invalide");\n\n        RuleFor(user => user.Age)\n            .InclusiveBetween(18, 120).WithMessage("L'âge doit être compris entre 18 et 120 ans");\n\n        RuleFor(user => user.Password)\n            .NotEmpty().WithMessage("Le mot de passe est obligatoire")\n            .MinimumLength(6).WithMessage("Le mot de passe doit contenir au moins 6 caractères");\n\n        RuleFor(user => user.ConfirmPassword)\n            .Equal(user => user.Password).WithMessage("Les mots de passe ne correspondent pas");\n    }\n}
\n\n

Utilisation du validateur :

\n\n
var validator = new UserValidator();\nvar user = new User\n{\n    Name = "A",\n    Email = "email-invalide",\n    Age = 15,\n    Password = "123",\n    ConfirmPassword = "456"\n};\n\nvar result = validator.Validate(user);\n\nif (!result.IsValid)\n{\n    foreach (var error in result.Errors)\n    {\n        Console.WriteLine($"Propriété : {error.PropertyName}, Erreur : {error.ErrorMessage}");\n    }\n}
\n\n

Méthodes principales de FluentValidation

\n\n

Voici les méthodes clés de la bibliothèque avec une description détaillée et des exemples.

\n\n

1. RuleFor()

\n

Ce qu'elle fait : Définit une règle de validation pour une propriété spécifique de l'objet. C'est la méthode principale par laquelle on commence

Recommendations