Validation des données en C# (.NET) : bibliothèques et approches

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) : guide complet avec exemples



La validation des données est l'un des aspects clés du développement d'applications fiables en C# dans l'écosystème .NET. Elle garantit que les données entrantes respectent les règles définies, évitant ainsi les erreurs, les vulnérabilités et un état incorrect du système. Dans cet article, nous allons détailler les principales bibliothèques et outils de validation dans .NET, y compris les mécanismes intégrés et les solutions tierces populaires.



Pourquoi la validation des données est-elle importante ?

Sans validation, l'application peut recevoir :

  • Des types de données incorrects (par exemple, une chaîne au lieu d'un nombre).
  • Des valeurs hors des plages autorisées (âge négatif, email inexistant).
  • Des injections SQL, des attaques XSS et d'autres menaces de sécurité.
  • Des violations de la logique métier (commande sans articles, nom d'utilisateur vide).

L'utilisation d'approches structurées pour la validation rend le code plus propre, plus testable et plus sûr.



1. Validation intégrée : Data Annotations (System.ComponentModel.DataAnnotations)

La méthode la plus simple et la plus courante consiste à utiliser des attributs de l'espace de noms System.ComponentModel.DataAnnotations. Cette méthode est idéale pour les modèles dans ASP.NET Core MVC, Web API et Entity Framework.



Exemple de modèle avec attributs :

using System.ComponentModel.DataAnnotations;

public class User{ [Required(ErrorMessage = "Le nom est obligatoire")] [StringLength(50, MinimumLength = 2, ErrorMessage = "Le nom doit comporter entre 2 et 50 caractères")] public string Name { get; set; }

[Required] [EmailAddress(ErrorMessage = "Email invalide")] public string Email { get; set; }

[Range(1, 120, ErrorMessage = "L'âge doit être compris entre 1 et 120")] public int Age { get; set; }

[Phone(ErrorMessage = "Numéro de téléphone invalide")] public string Phone { get; set; }}


Vérification programmatique du modèle :

var user = new User { Name = "A", Email = "invalid", Age = 200 };var context = new ValidationContext(user);var results = new List<ValidationResult>();

bool isValid = Validator.TryValidateObject(user, context, results, true);

if (!isValid){ foreach (var error in results) { Console.WriteLine(error.ErrorMessage); }}


Avantages : simplicité, prise en charge intégrée dans ASP.NET Core, validation automatique au niveau des contrôleurs.

Inconvénients : flexibilité limitée, attributs fortement couplés au modèle, difficile à implémenter pour des règles métier complexes.



2. FluentValidation — validation flexible et expressive

La bibliothèque FluentValidation est l'outil tiers le plus populaire pour la validation dans .NET. Elle permet de déplacer les règles de validation dans des classes séparées, prend en charge les chaînes d'appels, les messages personnalisés et les conditions complexes.



Installation via NuGet : Install-Package FluentValidation



Exemple de validateur :

using FluentValidation;

public class UserValidator : AbstractValidator<User>{ public UserValidator() { RuleFor(u => u.Name) .NotEmpty().WithMessage("Le nom ne peut pas être vide") .Length(2, 50).WithMessage("La longueur du nom doit être comprise entre 2 et 50 caractères");

RuleFor(u => u.Email) .NotEmpty() .EmailAddress().WithMessage("Format d'email invalide");

RuleFor(u => u.Age) .InclusiveBetween(1, 120).WithMessage("Âge hors plage");

// Règle personnalisée RuleFor(u => u.Phone) .Matches(@"^\\+?[1-9]\\d{1,14}$").When(u => !string.IsNullOrEmpty(u.Phone)) .WithMessage("Numéro de téléphone au format international"); }}


Utilisation

Recommendations