Ich verwende die DataAnnotations Attribute zusammen mit ASP.Net MVC 2 Modellvalidierung für meine Viewmodel zu bieten:Bereitstellen von lokalisierten Fehlermeldungen für nicht attributierte Modellvalidierung in ASP.Net MVC 2?
public class ExamplePersonViewModel {
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
[StringLength(128, ErrorMessageResourceName = "StringLength", ErrorMessageResourceType = typeof(Resources.Validation))]
[DataType(DataType.Text)]
public string Name { get; set; }
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
[DataType(DataType.Text)]
public int Age { get; set; }
}
Dies scheint wie erwartet zu funktionieren (obwohl es sehr ausführlich ist). Das Problem, das ich habe, ist, dass hinter den Kulissen Modellvalidierungen durchgeführt werden, die nicht an ein bestimmtes Attribut gebunden sind. Ein Beispiel dafür im obigen Modell ist, dass die Eigenschaft Age
eine int
sein muss. Wenn Sie versuchen, einen nicht ganzzahligen Wert im Formular einzugeben, wird ein Fehler mit der folgenden (nicht lokalisierten) Nachricht angezeigt:
Das Feld Alter muss eine Zahl sein.
Wie können diese Validierungsnachrichten ohne Attribut lokalisiert werden?
Gibt es eine vollständige Liste dieser Nachrichten zur Verfügung, so dass ich sicherstellen kann, dass sie alle lokalisiert sind?
Weitere Informationen, die ich auch gefunden habe: http://StackOverflow.com/Questions/1538873/How-to-Replace-the-default-modelstate-error-message-in-asp-net-mvc-2/ –
It Es ist wichtig zu beachten, dass Sie dadurch nur bei der Validierung auf der SERVER-SIDE eine lokalisierte Fehlermeldung erhalten. Um Ihre lokalisierte Nachricht auch auf der Client-Seite zu haben, müssen Sie 'ClientDataTypeModelValidatorProvider' aus der MVC-Quelle kopieren und einfügen und die' MakeErrorString'-Methode neu schreiben. Weitere Informationen [hier] (http://jwwishart.blogspot.com/2011/03/custom-server-and-client-side-required.html), blättern Sie zum Ende. Ich nahm mir verdammt viel Zeit, um herauszufinden, dass sowohl die Client- als auch die Serverseite unterschiedliche Mittel verwenden, um diese Nachricht zu erhalten. Hoffe das hilft jemandem Zeit zu sparen. –
Sie sagen, dass die zweite Nachricht nie angezeigt wird, wenn Sie DataAnnotationsModelValidatorProvider in der Liste der Validatoranbieter haben. Wie kann ich dieses Problem überwinden? – Andrew