【发布时间】:2020-09-23 01:15:22
【问题描述】:
我在ASP.NET Core 3.1 Web API 中使用FluentValidation。当出现验证错误时,FluentValidation 返回带有字段名称的错误列表(或{PropertyName})。问题是它正在对它们进行规范化:例如,UserId 更改为“User Id”。我想在错误中保留原始属性名称。
我发现了类似的问题here。解决方案是:“您可以通过将 ValidatorOptions.DisplayNameResolver 设置为应用程序启动例程中的自定义函数来全局关闭它。”。我也在他们的官方网站上找到了这个:
ValidatorOptions.DisplayNameResolver = (type, member, expression) => {
if(member != null) {
return member.Name + "Foo";
}
return null;
};
但我的(新手)问题是:如何将这些选项添加到我的项目中?这是我的Startup 课程(opt 没有DisplayNameResolver):
services.AddControllers()
.AddFluentValidation(opt =>
{
opt.RegisterValidatorsFromAssemblyContaining(typeof(PlayerInputValidator));
});
【问题讨论】:
-
ValidatorOptions.DisplayNameResolver是一个静态成员,所以你可以使用你发布的代码在ConfigureServices中配置它,只需将它放在services配置之外。 -
@stuartd 哦.. 顺序重要吗?我应该先
AddFluentValidation吗? -
我认为这不重要。 AddFluentValidation 扩展将向 DI 容器添加 FV 服务等。验证选项是静态的,随时可用
标签: c# asp.net-core .net-core asp.net-core-webapi fluentvalidation