17-2 Messages d'erreur et DisplayName
Vous avez peut-être remarqué que les messages d'erreur ressemblent à ceci:
The Email field is required.
Le message est non seulement en anglais, mais utilise directement le nom de l'attribut du ViewModel. Cela pourrait entre autres causer des problèmes si un attribut a normalement un accent ou un caractère spécial à l'affichage.
Ajout de DisplayName
au ViewModel
On peut ajouter au ViewModel
le Data Annotation
DisplayName
pour indiquer le nom du champ.
public class ConnexionViewModel
{
[Required]
[EmailAddress]
[DisplayName("Courriel")]
public string? Email { get; set; }
[Required]
[StringLength(16, MinimumLength = 8)]
[DataType(DataType.Password)]
[DisplayName("Mot de passe")]
public string? Password { get; set; }
}
Vous aurez maintenant les bons noms de champ et les bons messages d'erreur (toujours en anglais cependant).

Ajout de Prompt
et placeholder
Un champ input peut contenir un attribut placeholder
qui assigne une valeur d'aperçus au champ de formulaire.
Le type de formulaire bootstrap utilisé (Floating labels) s'appuie sur la présence de l'attribut placeholder
pour afficher une valeur par défaut dans le champ.
Pour être en accord avec les attentes de Bootstrap au niveau du formulaire, plutôt que DisplayName
, il est possible de plutôt utiliser Display[Name="", Prompt=""]
.
La valeur de Prompt
sera automatiquement associée à l'attribut placeholder
du champ input
du formulaire.
public class ConnexionViewModel
{
[Required]
[EmailAddress]
[Display(Name = "Courriel", Prompt = "Courriel")]
public string? Email { get; set; }
[Required]
[StringLength(16, MinimumLength = 8)]
[DataType(DataType.Password)]
[Display(Name = "Mot de passe", Prompt = "Mot de passe")]
public string? Password { get; set; }
}
Vous pouvez maintenant retirer les attributs placeholder
de votre formulaire de connexion. En effet asp-for
s'occupera d'ajouter les attributs pour vous!
<form asp-controller="Auth" asp-action="Authentifier">
<div class="form-floating mb-3">
<input asp-for="Email" class="form-control"/>
<label asp-for="Email">Courriel</label>
<span asp-validation-for="Email" class="invalid-feedback"></span>
</div>
<div class="form-floating mb-3">
<input type="password" asp-for="Password" class="form-control"/>
<label asp-for="Password">Mot de passe</label>
<span asp-validation-for="Password" class="invalid-feedback"></span>
</div>
<!-- ... -->
Cela devrait vous donner un formulaire contenant bien les placeholder
, comme auparavant, sur les input
.
Personnaliser les messages d'erreur
On peut personnaliser les messages d'erreur via les Data Annotations
en utilisant ErrorMessage
sur l'attribut Required
.
Par exemple:
public class ConnexionViewModel
{
[Required(ErrorMessage = "Le champ courriel est requis.")]
[EmailAddress(ErrorMessage = "Veuillez entrer une adresse courriel valide.")]
[Display(Name = "Courriel", Prompt = "Courriel")]
public string? Email { get; set; }
[Required(ErrorMessage = "Le champ mot de passe est requis")]
[StringLength(16, MinimumLength = 8, ErrorMessage = "Le mot de passe doit être entre {2} et {1} caractères")]
[DataType(DataType.Password)]
[Display(Name = "Mot de passe", Prompt = "Mot de passe")]
public string? Password { get; set; }
}
Ce qui devrait maintenant vous donner des messages d'erreur personnalisés et en français!