J'utilise des notifications de données dans une application MVC2 et je suis un peu découragé lorsque j'essaie d'utiliser les ressources du fichier RESX pour les messages d'erreur.DataAnnotations et ressources ne sont pas très bien
J'ai essayé ce qui suit, mais continue à recevoir l'exception « Un argument d'attribut doit être une expression constante, expression typeof ou un tableau d'expression de la création 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 sauf si je remplace ErrorMessageResourceName
par "Obligatoire" au lieu de Resources.ErrorMessages.Required
.
Quelqu'un peut-il me dire si je fais ça correctement?
Puis-je utiliser la propriété ErrorMessage à la place? Je préfère fortement typé .... – devlife
@devlife: Non. Pas si vous voulez la localisation. C'est exactement ce à quoi servent les propriétés de la ressource. En fait, c'est comme ça avec la localisation * any *, à un moment donné dans la chaîne, vous devrez rechercher une chaîne de ressources basée sur le nom, c'est ainsi que fonctionnent les ressources externalisées. Et ceci est toujours "fortement typé" basé sur la classe de ressources, vous n'avez tout simplement pas de sécurité à la compilation sur le nom de la ressource elle-même. Si vous voulez cela, créez simplement une classe comme 'ResourceNames' avec des lignes comme' public const string Required = "Required" ', vous pouvez alors les spécifier comme noms de ressources. – Aaronaught