2010-12-07 24 views
0

Je valide les propriétés de mon objet métier en utilisant les attributs de validation d'EntLib. Je souhaite localiser le texte MessageTemplate à l'aide d'un fichier de ressources, mais le message de compilation suivant s'affiche lorsque je fais quelque chose comme MessageTemplate = Resource.MyMessage:Comment puis-je utiliser un fichier de ressources pour le texte d'un message dans un attribut EntLib?

"Un argument d'attribut doit être une expression constante, une expression typeof ou un tableau expression de création d'un type de paramètre d'attribut "

Existe-t-il un moyen d'utiliser un fichier de ressources pour ce texte?

Merci, Jay

Répondre

1

Vous devez utiliser les MessageTemplateResourceName et MessageTemplateResourceType propriétés au lieu de la propriété MessageTemplate.

Votre code ressemblerait à quelque chose comme ceci:

[StringLengthValidator(1, 50, 
    MessageTemplateResourceName="InvalidLength", 
    MessageTemplateResourceType=typeof(MyResource))] 
public string FirstName 
{ 
    get; 
    set; 
} 

Notez que vous ne pouvez pas utiliser la classe de ressource fortement typé dans l'attribut (par exemple MyResource.InvalidLength) parce que l'attribut attend une constante et la La classe générée automatiquement contient une propriété. (C'est la raison de votre message d'erreur.)

Voir Using the Message Template Resources pour plus d'informations.

+0

C'est fantastique! J'avais peur de ne pas pouvoir le faire. Merci! – birdus