So lokalisieren Sie die Validierungsnachricht (DataAnnotationsValidator) auf der Blazor-Serverseite

So lokalisieren Sie die Validierungsnachricht (DataAnnotationsValidator) auf der Blazor-Serverseite

Hier ist meine Lösung für die Lokalisierung von Fehlermeldungen zur Datenannotation. Ich erstelle zwei Ressourcendateien, eine für Felder und eine für Fehlermeldungen.

  • DisplayNameResource zum Lokalisieren von Feldern
  • ErrorMessageResource zum Lokalisieren von Fehlermeldungen

Verwenden Sie in der Ansichtsmodellklasse Display Attribut zur Lokalisierung des Feldnamens. Um die Ressourcendatei anzugeben, verwenden Sie ResourceType Eigentum auf Display Attribut:

[Display(Name = "Address", ResourceType = typeof(DisplayNameResource))]

Und für Validierungsattribute verwenden Sie ErrorMessageResourceName und ErrorMessageResourceType Ressourcendatei angeben:

[Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]

Hier ist ein vollständiges Beispiel:

public class SomeViewModel
{
    [Display(Name = "Address", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [StringLength(256, ErrorMessageResourceName = "MaxLengthError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    public string Address { get; set; }

    [Display(Name = "Phone", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [RegularExpression("^09([0-9]{9})$", ErrorMessageResourceName = "PhoneLengthError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    public string Phone { get; set; }

    [Display(Name = "Password", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [StringLength(50, MinimumLength = 6, ErrorMessageResourceType = typeof(ErrorMessageResource), ErrorMessageResourceName = "MinxMaxLengthError")]
    public string Password { get; set; }

    [Display(Name = "ConfirmPassword", ResourceType = typeof(DisplayNameResource))]
    [Required(ErrorMessageResourceName = "RequiredError", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    [StringLength(50, MinimumLength = 6, ErrorMessageResourceType = typeof(ErrorMessageResource), ErrorMessageResourceName = "MinxMaxLengthError")]
    [Compare("Password", ErrorMessageResourceName = "PasswordConfirmMisMatch", ErrorMessageResourceType = typeof(ErrorMessageResource))]
    public string ConfirmPassword { get; set; }
}

Fehlermeldung für MaxLengthError ist {0} cannot be longer than {1} character , also {0} wird durch den lokalisierten Dateinamen und {1} ersetzt wird durch den 256 ersetzt Sie haben das Attribut [StringLength(256,... angegeben