ASP.NET MVC : A la découverte des Data Annotations

Sur tous les formulaires Web, il est nécessaire de contrôler les actions de l’utilisateur : on ne veut pas qu’il renseigne des lettres là où on attend une valeur numérique par exemple. C’est là que rentre en compte les Data Annotations.
ASP.NET MVC : A la découverte des Data Annotations
Les Data Annotations permettent de spécifier sur le modèle le type de données que l’on souhaite associer à chacune des propriétés, le moteur ASP.NET se chargeant d’afficher un message d’erreur si les données renseignées ne correspondent pas aux Data Annotations du modèle.
Exemple d’utilisation
Voici un exemple d’utilisation des Data Annotations :
Prenons un modèle représentant un livre et une vue affichant un formulaire permettant de créer une nouvelle instance de Livre. Le modèle se représente de la manière suivante :
public class Livre
{
[ScaffoldColumn(false)]
public int Id { get; set; }
[DisplayName(“Titre”)]
[Required(ErrorMessage = “Le titre du livre est obligatoire”)]
[StringLength(256)]
public string Titre { get; set; }
[DisplayName(“Auteur”)]
[Required(ErrorMessage = “L’auteur du livre est obligatoire”)]
[StringLength(256)]
public string Auteur { get; set; }
[Required(ErrorMessage = “Le prix du livre est obligatoire”)]
[Range(0, 500.00, ErrorMessage = “Le prix doit être entre 0 et 500”)]
public decimal Prix { get; set; }
}
Nous avons une Vue qui implémente le template de création lié au modèle Livre:
@model Models.Livre
@{
ViewBag.Title = “AjoutLivre”;
}
<h2>AjoutLivre</h2>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Livre</legend>
<div class=”editor-label”>
@Html.LabelFor(model => model.Titre)
</div>
<div class=”editor-field”>
@Html.EditorFor(model => model.Titre)
@Html.ValidationMessageFor(model => model.Titre)
</div>
<div class=”editor-label”>
@Html.LabelFor(model => model.Auteur)
</div>
<div class=”editor-field”>
@Html.EditorFor(model => model.Auteur)
@Html.ValidationMessageFor(model => model.Auteur)
</div>
<div class=”editor-label”>
@Html.LabelFor(model => model.Prix)
</div>
<div class=”editor-field”>
@Html.EditorFor(model => model.Prix)
@Html.ValidationMessageFor(model => model.Prix)
</div>
<p>
<input type=”submit” value=”Create” />
</p>
</fieldset>
}
<div>
@Html.ActionLink(“Back to List”, “Index”)
</div>
@section Scripts {
@Scripts.Render(“~/bundles/jqueryval”)
}
Quand on navigue sur la page on arrive donc au formulaire suivant :
Si je clique sur le bouton valider en laissant les champs vides j’obtiens ceci :
Et si je tape des lettres dans le champs Prix, j’obtiens ceci :
Conclusion
Je n’ai utilisé ici qu’une petite partie des possibilités offertes mais on remarque que les Data Annotations sont vraiment très pratiques et faciles à utiliser. Il est aussi possible d’avoir des validateurs personnalisés en utilisant une classe héritant de ValidationAttribute.
Bonjour,
Merci pour votre explications. C’est super. Comme je viens de réalisé un formulaire, je vais essayer d’utiliser ce que vous venez d’expliquer.
Est-ce que vous connaissez un lien qui fourni toutes les annotations avec leurs descriptions ?
Merci