【发布时间】:2020-10-08 13:11:30
【问题描述】:
我在我的项目中使用 FluentValidation 来验证几乎所有进入我的 WebApi 的请求。 它工作正常,但我被要求翻译错误消息中的属性名称。我的项目必须至少处理法语和英语,例如,我想要实现的是:
- 需要“名字”(英文大小写)
- 'Prénom' est requis(法文案例)
我已经有一个 IPropertyLabelService 用于其他目的,它被注入到 Startup.cs 中,我想使用它。它在 .json 中找到属性名称的翻译,这已经很好了。
我的问题是我不知道如何在全球范围内使用它。我知道 FluentValidation 的文档说要在启动文件中设置 ValidatorOptions.DisplayNameResolver,如下所示:
FluentValidation.ValidatorOptions.DisplayNameResolver = (type, memberInfo, expression) => {
// Do something
};
我不知道如何在其中使用我的 IPropertyLabelService,因为 Startup.ConfigureServices 方法还没有结束,所以我无法解析我的服务...
任何其他实现此行为的解决方案也非常受欢迎。我考虑过使用 .WithMessage() 或 .WithName() 但我有大量的验证器,要单独添加它会很长。
【问题讨论】:
标签: asp.net-core dependency-injection asp.net-web-api2 fluentvalidation