Asp.net 核心网站 api Localization DataAnnotation 自定义属性
Asp.net core web api Localization DataAnnotation custom attribute
我正在尝试对资源文件使用本地化,但它不起作用,仅针对自定义必需属性
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; }
}
在您的配置方法中添加:
//localization & globalization
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
然后在您的自定义验证器 class 中添加:
var _localizationService = (IStringLocalizer<SalonForInsertDto>)validationContext.GetService(typeof(IStringLocalizer<SalonForInsertDto>));
然后您现在可以从资源文件中获取本地化的字符串值,例如:
_localizationService["How are you?"]
您可以阅读有关 IStringLocalizer 对象的信息,它正在 official docs 中工作。
我正在尝试对资源文件使用本地化,但它不起作用,仅针对自定义必需属性
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; }
}
在您的配置方法中添加:
//localization & globalization
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
然后在您的自定义验证器 class 中添加:
var _localizationService = (IStringLocalizer<SalonForInsertDto>)validationContext.GetService(typeof(IStringLocalizer<SalonForInsertDto>));
然后您现在可以从资源文件中获取本地化的字符串值,例如:
_localizationService["How are you?"]
您可以阅读有关 IStringLocalizer 对象的信息,它正在 official docs 中工作。