asp.net-web-api - Asp.net core web api Localization DataAnnotation 自定义属性
问题描述
我正在尝试对资源文件使用本地化,但它不起作用,仅用于自定义必需属性
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);
然后在您的自定义验证器类中添加:
var _localizationService = (IStringLocalizer<SalonForInsertDto>)validationContext.GetService(typeof(IStringLocalizer<SalonForInsertDto>));
然后您现在可以从资源文件中获取本地化的字符串值,例如:
_localizationService["How are you?"]
您可以阅读有关 IStringLocalizer 对象的信息,它正在官方文档中工作。
推荐阅读
- css - Element UI - VueJS - 在 IOS 上选择输入双击错误
- graph - 查找所有拓扑顺序
- .net-core - Task.IsFaulted 没有在我的 .Net 核心中捕获异常
- parsing - 如何在 CLion 中启用 CPP 文件的解析上下文切换器?
- c++ - 如何使用 open62541 一次使用 OPC-UA 编写多个节点?
- algorithm - 如何在时间 O(log(n)) 处拆分给定节点的 AVL 树?
- javascript - 无限获取循环
- javascript - 尝试将信息发布到 heroku 时出现 404(未找到)
- javascript - 渐进式 Web 应用程序和后台 Web 套接字连接
- kubernetes - GCP - 如何使用 Ingress 在负载均衡器上为多个应用程序提供服务?