Validation par annotations de données
Validez les modèles avec des attributs.
Validation par annotations de données est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
Qu’est-ce que la validation par annotations de données
Les annotations de données sont des attributs que vous placez sur les propriétés d’un modèle pour déclarer directement les règles de validation dans vos classes C#. ASP.NET Core lit ces attributs lors de la liaison du modèle et valide automatiquement les requêtes entrantes.
Elles se trouvent dans l’espace de noms System.ComponentModel.DataAnnotations.
using System.ComponentModel.DataAnnotations;
public class RegisterRequest
{
[Required]
public string Username { get; set; }
}L’attribut [Required]
[Required] garantit qu’une propriété n’est pas nulle (et qu’il ne s’agit pas, par défaut, d’une chaîne vide). Si le client omet le champ, la validation du modèle échoue avant l’exécution de votre action.
Vous pouvez personnaliser le message avec ErrorMessage.
public class RegisterRequest
{
[Required(ErrorMessage = "Username is required.")]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}Valider les nombres avec [Range]
[Range] restreint une valeur numérique à un minimum et un maximum inclusifs. Cela fonctionne notamment avec int, double et decimal.
Utilisez-le pour les âges, les quantités, les évaluations et tout nombre compris dans des limites données.
public class ProductRequest
{
[Range(1, 1000, ErrorMessage = "Quantity must be between 1 and 1000.")]
public int Quantity { get; set; }
[Range(0.01, 9999.99)]
public decimal Price { get; set; }
}Valider une adresse e-mail avec [EmailAddress]
[EmailAddress] vérifie qu’une chaîne ressemble à une adresse e-mail valide. Combinez-le avec [Required] afin que le champ soit à la fois présent et correctement formé.
public class ContactRequest
{
[Required]
[EmailAddress(ErrorMessage = "Please enter a valid email.")]
public string Email { get; set; }
}Contraintes de longueur des chaînes
[StringLength] définit une longueur maximale (et éventuellement minimale) pour un texte. [MinLength] et [MaxLength] sont des solutions plus simples.
public class RegisterRequest
{
[Required]
[StringLength(20, MinimumLength = 3)]
public string Username { get; set; }
[MaxLength(500)]
public string Bio { get; set; }
}Mise en correspondance de motifs avec [RegularExpression]
[RegularExpression] valide une chaîne par rapport à un motif d’expression régulière. C’est idéal pour des formats tels que les numéros de téléphone, les codes postaux ou les segments d’URL.
public class ProfileRequest
{
[RegularExpression(@"^[a-z0-9-]+$",
ErrorMessage = "Slug may only contain lowercase letters, digits and dashes.")]
public string Slug { get; set; }
}Comparer deux champs avec [Compare]
[Compare] garantit qu’une propriété correspond à une autre. Le cas classique consiste à confirmer un mot de passe.
public class RegisterRequest
{
[Required]
public string Password { get; set; }
[Compare(nameof(Password), ErrorMessage = "Passwords do not match.")]
public string ConfirmPassword { get; set; }
}Comment ModelState signale les erreurs
Lorsque la validation échoue, ASP.NET Core remplit ModelState avec les erreurs. Dans un contrôleur d’API décoré avec [ApiController], les requêtes non valides renvoient automatiquement une réponse 400 ; vous devez donc rarement le vérifier manuellement.
[ApiController]
[Route("api/[controller]")]
public class AccountController : ControllerBase
{
[HttpPost("register")]
public IActionResult Register(RegisterRequest request)
{
// [ApiController] already returned 400 if invalid
return Ok("Registered " + request.Username);
}
}Vérifications manuelles de ModelState
Sans [ApiController] (par exemple dans les contrôleurs MVC), vous vérifiez vous-même ModelState.IsValid et décidez de la réponse à renvoyer.
public IActionResult Register(RegisterRequest request)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok();
}Combiner plusieurs annotations
Les annotations se cumulent. Une même propriété peut porter plusieurs attributs, et tous doivent réussir. L’ordre n’a pas d’importance pour l’évaluation, mais veillez à les garder lisibles.
public class SignupRequest
{
[Required]
[EmailAddress]
[StringLength(254)]
public string Email { get; set; }
[Required]
[Range(18, 120, ErrorMessage = "Must be 18 or older.")]
public int Age { get; set; }
}Quand les annotations de données atteignent leurs limites
Les annotations de données sont idéales pour les règles simples et déclaratives. En revanche, la logique entre propriétés, les recherches en base de données ou les règles conditionnelles (« requis uniquement lorsque X ») deviennent rapidement difficiles à gérer. C’est là que FluentValidation excelle, comme nous allons le voir.
Vérification rapide
Vérifiez votre compréhension des annotations de données.
Récapitulatif
Vous avez appris que les annotations de données déclarent les règles de validation sous forme d’attributs : [Required] pour vérifier la présence, [Range] pour les limites numériques, [EmailAddress] pour le format des adresses e-mail, ainsi que [StringLength], [RegularExpression] et [Compare]. Avec [ApiController], les échecs renvoient automatiquement une réponse 400 via ModelState. Pour les règles complexes, utilisez ensuite FluentValidation.
Questions Fréquemment Posées
La leçon « Validation par annotations de données » est-elle gratuite ?
Oui — le texte complet de « Validation par annotations de données » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Validation par annotations de données » ?
Validez les modèles avec des attributs. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Validation par annotations de données » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Validation par annotations de données
- Règles FluentValidation
- Règles personnalisées et conditionnelles
- Intégrer la validation aux API