EveCrystali / P3_Testez_implementation_fonctionnalite

0 stars 0 forks source link

Understanding validation of forms #13

Closed EveCrystali closed 7 months ago

EveCrystali commented 8 months ago

Progression 30%.

Ressources :

Consultez l’article Validation du modèle dans ASP.NET Core MVC et Razor Pages pour vous familiariser avec la validation du modèle.

Recommandations :

Vous allez travailler avec deux concepts principaux :

Points de vigilance :

La validation est un aspect crucial de toute application pour assurer le bon fonctionnement des opérations entre le Front-End et le Back-End. Même si des contrôles sont exécutés côté Front-End, il est impératif d’avoir des contrôles côté Back-End. À terme, votre Back-End pourrait être appelé par différents types de Front-End que vous ne maîtrisez pas, d’où la nécessité de ce double contrôle.

Par exemple, vous développez un Back-End pour gérer un site e-commerce qui est consulté depuis une application Android. Admettons que le développeur de ce Front-End ait oublié de mettre un contrôle pour empêcher de taper des lettres dans un Input représentant un prix… ce qui induit des erreurs. Si vous avez des questions, demandez à votre mentor afin de bien comprendre les principes avant de passer à l'étape suivante.

EveCrystali commented 7 months ago

Attributs de validation

Attributs prédéfinis

[ValidateNever] : indique qu’une propriété ou un paramètre doit être exclu de la validation. [CreditCard] : vérifie que la propriété a un format de carte de crédit. Nécessite des méthodes supplémentaires de validation jQuery. [Compare]: vérifie que deux propriétés d’un modèle correspondent. [EmailAddress]: vérifie que la propriété a un format d’e-mail. [Phone]: vérifie que la propriété a un format de numéro de téléphone. [Range]: vérifie que la valeur de propriété est comprise dans une plage spécifiée. [RegularExpression]: vérifie que la valeur de propriété correspond à une expression régulière spécifiée. [Required]: valide que le champ n’est pas Null. Pour plus d’informations sur le comportement de cet attribut, consultez Attribut [Remote][Required]. [StringLength]: vérifie qu’une valeur de propriété de chaîne ne dépasse pas une limite de longueur spécifiée. [Url]: vérifie que la propriété a un format d’URL. [Remote]: valide l’entrée sur le client en appelant une méthode d’action sur le serveur. Pour plus d’informations sur le comportement de cet attribut, consultez [Remote]Attribut. Vous trouverez la liste complète des attributs de validation dans l’System.ComponentModel.DataAnnotations espace de noms.

Exemple

Les attributs de validation vous permettent de spécifier des règles de validation pour des propriétés de modèle. L’exemple suivant tiré de l’exemple d’application montre une classe de modèle annotée avec des attributs de validation. L’attribut [ClassicMovie] est un attribut de validation personnalisé et les autres sont prédéfinis. [ClassicMovieWithClientValidator] n’apparaît pas, cela montre une autre façon d’implémenter un attribut personnalisé.

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

    [Required]
    [StringLength(100)]
    public string Title { get; set; }

    [ClassicMovie(1960)]
    [DataType(DataType.Date)]
    [Display(Name = "Release Date")]
    public DateTime ReleaseDate { get; set; }

    [Required]
    [StringLength(1000)]
    public string Description { get; set; }

    [Range(0, 999.99)]
    public decimal Price { get; set; }

    public Genre Genre { get; set; }

    public bool Preorder { get; set; }
}

Messages d’erreur

Les attributs de validation vous permettent de spécifier le message d’erreur à afficher pour l’entrée non valide. Par exemple :

[StringLength(8, ErrorMessage = "Name length can't be more than 8.")]

En interne, les attributs appellent [String.Format](https://learn.microsoft.com/fr-fr/dotnet/api/system.string.format) avec un espace réservé pour le nom de champ et parfois d’autres espaces réservés. Par exemple :

[StringLength(8, ErrorMessage = "{0} length must be between {2} and {1}.", MinimumLength = 6)] Appliqué à une propriété Name, le message d’erreur créé par le code précédent serait « Name length must be between 6 and 8 ».

Pour savoir quels paramètres sont passés à String.Format pour le message d’erreur d’un attribut particulier, consultez le code source de DataAnnotations.

EveCrystali commented 7 months ago

All Data Annotations :

https://learn.microsoft.com/fr-fr/dotnet/api/system.componentmodel.dataannotations?view=net-8.0