Ich habe Validation wie:ASP.NET MVC: Validation und lokalisierte Errormessage
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
..und es wie folgt aus:
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 bei App_GlobalResources Ressource-Datei ist und "txtUsername" - ist der String-Name in der Ressourcendatei.
Problem: Fehlermeldungen werden nicht angezeigt.
Frage: Wie Fehlermeldung einstellen, wenn ich einige Sprachen auf der Website habe.
Eine weitere Infos:
Ich bin in der Lage Zugang SignIn.txtUsername
von Ansichten oder eine Datei in das Projekt. Vom Controller
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
funktioniert gut, gut .. Ich kann Errormessage innen Validation zuweisen, bekam aber Fehler nach der zweiten Validierung versuchen ... wenn ich diese überprüfen wie platzieren -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
-I-Fehler haben nach Ich wechsle in eine andere Sprache - ErrorMessage kann nur einmal vergeben werden.
Bitte beraten wie ich es lösen kann.
Vielen Dank im Voraus.
Wie ich schrieb, verwende ich globale Ressourcen "SignIn ist Ressource-Datei bei App_GlobalResources" –
Leider können Sie Ressourcen in App_GlobalResources nicht öffentlich machen. Sie müssen stattdessen die Ressourcendatei aus dem Ordner "Eigenschaften" verwenden - klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie die Eigenschaften aus, wählen Sie im linken Menü "Ressourcen" und klicken Sie auf "dieses Projekt ...". Die Standardressourcendatei mit dem Namen "Resources.resx" wird erstellt. Sie können es umbenennen (zB "ModelErrors") und im Code verwenden: [Erforderlich (ErrorMessageResourceName = "Password_Required", ErrorMessageResourceType = typeof (Properties.ModelErrors))] – Feryt
Ja, das stimmt. DataAnnotations existieren außerhalb von ASP.NET, sodass sie nichts über App_XxxResources wissen und nur mit herkömmlichen Ressourcendateien arbeiten. –