Quel atsortingbut d’annotation de données crée cet atsortingbut de validation?

En supposant que nous ayons un modèle comme celui-ci:

public class TheViewModel { public ssortingng DateTime? Image_Date { get; set; } } 

Et il est ajouté à une vue Razor comme ceci:

 Html.TextBoxFor(model => model.Image_Date) 

Ensuite, ce qui suit est rendu dans le navigateur:

  

L’atsortingbut data-val-date est ce qui m’intéresse. Il est clairement injecté dans l’intégration de validation jQuery “discrète” de MVC.

Alors, quelle annotation de données remplacera le verbiage dans l’atsortingbut HTML?

Par exemple, [Required(ErrorMessage="This field is required!")] Remplacera la norme “Le champ {0} est requirejs.” message.


Tentatives infructueuses:

  1. [DataType(DataType.Date, ErrorMessage = "Must be a valid date.")] Ne semble pas avoir d’effet sur la validation côté client.

  2. [DisplayName("...")] modifie la partie générique du motif, mais n’affecte évidemment pas le motif lui-même.

L’atsortingbut data-val-date est ajouté par la structure car la propriété est du type DateTime? . C’est la méthode GetUnobtrusiveValidationAtsortingbutes() de la classe HtmlHelper qui génère tous les atsortingbuts data-val-* .

Notez que [DataType(DataType.Date, "...")] est un atsortingbut utilisé par la méthode EditorFor() pour append l’atsortingbut type="date" qui génère à son tour le navigateur HTML-5 datepicker (s’il est pris en charge par le navigateur) et n’est pas lié à la validation côté client.

Les messages d’erreur par défaut sont définis dans les fichiers de ressources et vous pouvez créer vos propres fichiers pour remplacer les valeurs par défaut.

Créez un (par exemple) MyResources.resx dans le dossier App_GlobalResources (vous devrez peut-être créer ce dossier) et ajoutez la clé FieldMustBeDate et votre message (le message par défaut est affiché ci-dessous).

 FieldMustBeDate : The field {0} must be a date 

et ajoutez ce qui suit dans Application_Start() de Global.asax

 ClientDataTypeModelValidatorProvider.ResourceClassKey = "MyResources"; DefaultModelBinder.ResourceClassKey = "MyResources"; 

Notez que vous pouvez également remplacer le message d’erreur par défaut pour l’atsortingbut [Required] à l’aide de la clé PropertyValueRequired .