Asp. net пользовательский атрибут локализации DataAnnotation основного веб-API - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь использовать локализацию с файлами ресурсов, но она не работает, только для настраиваемого обязательного атрибута

public class RequiredIntAttribute : RequiredAttribute
{
    public override bool IsValid(object value)
    {
        bool isValid = base.IsValid(value);

        if (isValid)
        {
            isValid =  int.Parse(value.ToString()) != 0;
        }

        return isValid;
    }
}

public class SalonForInsertDto
{

    public string Name { get; set; }
    public string NameEn { get; set; }

    [RequiredInt(ErrorMessage = "the userId is required")]
    public int UserId { get; set; }
}

1 Ответ

1 голос
/ 07 мая 2020

В методе Configure добавьте:

//localization & globalization
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);

Затем в свой собственный класс валидатора вы добавите:

var _localizationService = (IStringLocalizer<SalonForInsertDto>)validationContext.GetService(typeof(IStringLocalizer<SalonForInsertDto>));

, и теперь вы можете получить локализованное строковое значение из файл ресурсов, например:

_localizationService["How are you?"]

Вы можете прочитать об объекте IStringLocalizer и его работе в официальных документах .

...