DataAnnotations et ressources ne jouent pas bien
-
20-09-2019 - |
Question
J'utilise DataAnnotations dans une application MVC2 et je suis un peu découragée lorsque vous essayez d'utiliser les ressources de fichiers RESX pour les messages d'erreur.
Je l'ai essayé ce qui suit, mais continue à recevoir l'exception « Un argument d'attribut doit être une expression constante, expression typeof ou création de la matrice expression d'un type de paramètre d'attribut »
[Required(ErrorMessage = Resources.ErrorMessages.Required)]
[Required(ErrorMessageResourceName = Resources.ErrorMessages.Required,
ErrorMessageResourceType = typeof(Resources.ErrorMessages)]
Je continue à recevoir ce message d'erreur à moins que je remplace ErrorMessageResourceName
avec « nécessaire » au lieu de Resources.ErrorMessages.Required
.
Quelqu'un peut-il me dire si je fais ce droit?
La solution
Oui, ce que vous faites à la fin est fondamentalement correcte. Le ErrorMessageResourceName
prend son nom l'indique, le nom d'une ressource, pas la ressource elle-même.
points de Resources.ErrorMessages.Required
à réelle (localisé) message d'erreur (ressource). nom de la ressource est simplement « nécessaire », et type du gestionnaire de ressources (utilisé pour ErrorMessageResourceType
) est la classe qui contient cette ressource, dans ce cas, le Resources.ErrorMessages
classe.
Donc, votre déclaration devrait ressembler à ceci:
[Required(ErrorMessageResourceType = typeof(Resources.ErrorMessages),
ErrorMessageResourceName = "Required")]
public string Something { get; set; }