Ho ValidationAttribute come:ASP.NET MVC: ValidationAttribute e localizzato ErrorMessage
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
..e utilizza in questo modo:
public class AccountSignIn
{
[Username(ErrorMessageResourceName ="txtUsername",ErrorMessageResourceType=typeof(SignIn))]
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}
SignIn è file di risorse a App_GlobalResources e "txtUsername" - è il nome della stringa nel file di risorse.
Problema: I messaggi di errore non sono visualizzati.
Domanda: Come impostare un messaggio di errore se ho poche lingue sul sito web.
Un altro Info:
Io sono in grado di accedere SignIn.txtUsername
da Vista o qualsiasi file nel progetto. Dal regolatore
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
funziona bene così .. posso assegnare ErrorMessage all'interno ValidationAttribute, ma ha ottenuto l'errore dopo la seconda convalida provare ... se metto verificare come questo -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
ho errore dopo Passare a un'altra lingua - ErrorMessage può essere assegnato solo una volta.
Si prega di consigli su come posso risolverlo.
Grazie in anticipo.
Come ho scritto, sto utilizzando le risorse globali "SignIn è file di risorse su App_GlobalResources" –
Sfortunatamente, non è possibile rendere pubbliche le risorse in App_GlobalResources. È necessario utilizzare il file di risorse dalla cartella "Proprietà" invece - fare clic con il tasto destro del mouse sul progetto, selezionare Proprietà, dal menu a sinistra selezionare "Risorse" e fare clic su "questo progetto ...". Verrà creato il file di risorse predefinito denominato "Resources.resx". È possibile rinominarlo (ad esempio "ModelErrors") e utilizzare nel codice: [Obbligatorio (ErrorMessageResourceName = "Password_Required", ErrorMessageResourceType = typeof (Properties.ModelErrors))] – Feryt
Sì, è vero. DataAnnotations esistono per essere utilizzate al di fuori di ASP.NET, quindi non sanno nulla di App_XxxResources e funzionano solo con i file di risorse tradizionali. –