J'essaie d'utiliser la validation de modèle dans MVC .Net Core et ne parviens pas à remplacer le message d'erreur par défaut "La valeur" n'est pas valide ".
En théorie, nous pouvons remplacer notre propre message d'erreur personnalisé en utilisant l'annotation ErrorMessage
dans le modèle. Mais je ne pouvais pas trouver un moyen de faire fonctionner celui-ci.
Mon modele
[Required(ErrorMessage = "Date Required")]
[DataType(DataType.Date, ErrorMessage = "Invalid Date Format")]
[Display(Name = "Appointment Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime AppointmentDate { get; set; }
Je mets différent ErrorMessage
pour les balises Required
et DataType
comme indiqué ci-dessus.
Ma vue HTML
<div class="col-md-2">
<input class="form-control" asp-for="AppointmentDate">
<span asp-validation-for="AppointmentDate" class="text-danger"></span>
</div>
Pourriez-vous s'il vous plaît m'aider comment je pourrais obtenir ce message d'erreur remplacé? Merci.
Pour que votre attribut Required
fonctionne, vous devez rendre le champ nullable:
public DateTime? AppointmentDate { get; set; }
Edit : Notez également que l'attribut DataType
n'effectue pas de validation sur le champ. Date de validation MVC lors de l'application d'une liaison de post
données à model
Mon problème était que dans l'action Créer, je retournais la vue sans créer une nouvelle entité, ce qui, lorsque j'ai changé cela, c'est-à-dire que Return View(new MyEntity());
a résolu le problème
Avoir le même problème mais ne peut pas détecter le problème. J'ai vérifié l'objet en mode débogage pour voir s'il existait un moyen de voir quelle propriété échouait à l'état du modèle.
Ensuite, je vois quel modèle échoue . C'est une valeur booléenne qui correspond à une case à cocher
La partie étrange est "ceci n'est pas un champ obligatoire"!
J'ai ajouté un point d'interrogation et utilisé la méthode getvalueordefault lors de son utilisation
public bool? IsCorporateAccount { get; set; }