Validation

Source :https://docs.microsoft.com/en-US/aspnet/mvc/overview/getting-started/introduction/adding-validation

DRY

DRY : Don’t repeat yourself

ASP.NET MVC nous encourage à spécifier un comportement une seule et unique fois.

Les rules de validation dans le model

StringLength : Taille du string

DisplayName : Nom affiché via les @html helper

DataType : Type de Data pour aider les @html helper

DisplayFormat : Pour la date nottament

RegularExpression : Expression rég

Required : Requis

Range : Valeur min et max

Exemple :

public class Movie
{
public int ID { get; set; }


[StringLength(60, MinimumLength = 3)]
public string Title { get; set; }


[Display(Name = "Release Date")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime ReleaseDate { get; set; }

[RegularExpression(@"^[A-Z]+[a-zA-Z'\s]*$")]
[Required]
[StringLength(30)]
public string Genre { get; set; }


[Range(1, 100)]
[DataType(DataType.Currency)]
public decimal Price { get; set; }


[RegularExpression(@"^[A-Z]+[a-zA-Z'\s]*$")]
[StringLength(5)]
public string Rating { get; set; }
}

Ces attributs ont un impact en terme d’affichage, en terme de validation, et en terme de DataBase.

Côté Client :

Validation avec JavaScript et jQuery, encapsulé par les helper @html.

Côté Serveur (si un utilisateur a JavaScript disabled) :

DataBase protégée par les rules de validation (non nullable, maxlength, … )

DataBase

Pour assurer les changements en DB, une migration s’impose :

add-migration DataAnnotations
update-database

UI

Lors d’un ajout ou modification, la validation jQuery côté Client détecte les erreurs et afficht un message d’erreur.

Controller

le if (ModelState.IsValid) assure la validation.

L’attribut DataType

Exemple :

[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }

[DataType(DataType.Currency)]
public decimal Price { get; set; }

L’attribut DataType fournit au @html helper des indices sur comment formater la donnée.

Ajout d’un <a> pour une url,

Ajout d’un mailto: pour un email,

Un sélectionneur de date pour une Date,

L’attribut DataType ne fournit aucune forme de validation.

Pour expliciter un format de date :

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime EnrollmentDate { get; set; }

results matching ""

    No results matching ""