DataAnnotations e risorse non funzionano molto bene
-
20-09-2019 - |
Domanda
sto usando dataannotations in un app MVC2 e sono un po 'scoraggiato quando si cerca di utilizzare le risorse di file RESX per i messaggi di errore.
Ho provato quanto segue ma continuo a ricevere l'eccezione "Un argomento attributo deve essere un'espressione costante, typeof espressione o creazione matrice espressione di un tipo di parametro attributo"
[Required(ErrorMessage = Resources.ErrorMessages.Required)]
[Required(ErrorMessageResourceName = Resources.ErrorMessages.Required,
ErrorMessageResourceType = typeof(Resources.ErrorMessages)]
Continuo a ricevere il messaggio di errore se non sostituisco ErrorMessageResourceName
con "Required" invece di Resources.ErrorMessages.Required
.
Qualcuno può dirmi se sto facendo questo diritto?
Soluzione
Sì, quello che stai facendo, alla fine è fondamentalmente corretto. Il ErrorMessageResourceName
prende quello che suggerisce il nome, il nome di di una risorsa, non la risorsa stessa.
punti Resources.ErrorMessages.Required
al reale (localizzata) messaggio di errore (risorse). Il nome di della risorsa è semplicemente "Required", ed il tipo del Resource Manager (usato per ErrorMessageResourceType
) è la classe che contiene quella risorsa, in questo caso il Resources.ErrorMessages
classe.
Quindi la vostra dichiarazione dovrebbe essere simile a questo:
[Required(ErrorMessageResourceType = typeof(Resources.ErrorMessages),
ErrorMessageResourceName = "Required")]
public string Something { get; set; }