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 :

vueAjoutLivre

Si je clique sur le bouton valider en laissant les champs vides j’obtiens ceci :

AjoutLivreAvecErreurs

Et si je tape des lettres dans le champs Prix, j’obtiens ceci :

AjoutLivreErreurPrix

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.

Tags: asp.net, mvc,

Pas de commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *