IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

MVC Music Store


précédentsommairesuivant

XXI. Introduction

Nous avons un problème majeur avec nos formulaires Create et Edit : ils n'effectuent aucune validation. Nous pouvons faire certaines choses comme laisser des champs requis vides ou encore taper une lettre dans le champ Price, et la première erreur que nous allons voir apparaître proviendra de la base de données.

Nous pouvons facilement ajouter une validation de données à notre application en ajoutant des DataAnnotations à notre modèle de classes. Les DataAnnotations nous permettent de décrire les règles que nous voulons appliquer à notre modèle de propriétés, ASP.NET MVC se chargeant de les faire respecter et d'afficher les messages appropriés à nos utilisateurs.

XXII. Ajouter une validation à notre formulaire Album

Nous allons utiliser les attributs DataAnnotations suivants :

  • Required ? Indique que cette propriété est un champ requis.
  • DisplayName ? Définit le texte que l'on veut utiliser dans les champs du formulaire et dans les messages de validation.
  • StringLength ? Définit la longueur maximum pour un champ de type chaîne.
  • Range ? Donne une valeur minimale et maximale d'un champ de type numérique.
  • Bind ? Liste les champs à exclure ou inclure lorsque l'on lie des paramètres ou des données du formulaire au modèle de propriété.
  • ScaffoldColumn ? Permet d'avoir des champs cachés dans les formulaires d'édition.

Note : Pour plus d'informations sur la validation de modèle en utilisant les attributs DataAnnotation, voir la documentation MSDN sur http://go.microsoft.com/fwlink/?LinkId=159063

Ouvrez la classe Album et ajoutez les instructions using suivantes en haut.

 
Sélectionnez
using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
 using System.Web.Mvc;

Ensuite, mettez à jour les propriétés afin d'ajouter des attributs d'affichage et de validation comme indiqué ci-dessous.

 
Sélectionnez
namespace MvcMusicStore.Models
{
    [Bind(Exclude = "AlbumId")]
    public class Album
    {
        [ScaffoldColumn(false)]
        public int      AlbumId    { get; set; }
        [DisplayName("Genre")]
        public int      GenreId    { get; set; }
        [DisplayName("Artist")]
        public int      ArtistId   { get; set; }
        [Required(ErrorMessage = "An Album Title is required")]
        [StringLength(160)]
        public string   Title      { get; set; }
        [Required(ErrorMessage = "Price is required")]
        [Range(0.01, 100.00,
            ErrorMessage = "Price must be between 0.01 and 100.00")]
        public decimal Price       { get; set; }
        [DisplayName("Album Art URL")]
        [StringLength(1024)]
        public string AlbumArtUrl { get; set; }
        public virtual Genre  Genre    { get; set; }
        public virtual Artist Artist   { get; set; }
    }
}

Tant que nous y sommes, nous avons également changé les propriétés Genre et Artist en tant que virtual. Cela permet à Entity Framework de les charger si nécessaire.

 
Sélectionnez
public virtual Genre    Genre       { get; set; }
public virtual Artist   Artist      { get; set; }

Après avoir ajouté ces attributs à notre modèle Album, nos écrans Create et Edit commencent immédiatement la validation des champs et utilisent les attributs DisplayName que nous avons choisis (e.g. « Album Art Url » au lieu de « AlbumArtUrl »). Lancez l'application et naviguer vers /StoreManager/Create.

Image non disponible

Ensuite, nous allons briser certaines règles de validation. Saisissez 0 dans le champ Price et laissez le champ Title vide. Lorsque l'on clique sur le bouton Create, nous voyons le formulaire s'afficher avec des messages d'erreurs de validation indiquant quels champs ne respectent pas les règles de validation que nous avons définies.

Image non disponible

XXIII. Tester la validation côté client

La validation côté serveur est très importante dans une application, car les utilisateurs peuvent contourner la validation côté client. Cependant, les formulaires web qui n'implémentent que la validation côté serveur se retrouvent confrontés à 3 problèmes importants.

  1. L'utilisateur doit attendre que le formulaire soit posté, validé sur le serveur, et que la réponse soit envoyée au navigateur.
  2. L'utilisateur n'a pas un retour immédiat lorsqu'il corrige un champ donc outrepasse les règles de validation.
  3. Nous gaspillons les ressources du serveur pour effectuer la logique de validation au lieu de tirer parti du navigateur de l'utilisateur.

Heureusement, les modèles d'ASP.NET MVC 3 ont une validation côté client intégrée, qui ne nécessite aucun travail supplémentaire, quel qu'il soit.

Taper une seule lettre dans le champ Title répond aux exigences de validation, alors le message de validation est immédiatement enlevé.

Image non disponible

Vous pouvez utiliser les discussions disponibles sur http://mvcmusicstore.codeplex.com pour toutes questions ou tous commentaires.


précédentsommairesuivant

Copyright © 2012 Jon Galloway. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.