问题描述
我正在FluentValidation
中使用ASP.NET Core 3.1 Web API
。发生验证错误时,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));
});
解决方法
您应该能够在启动文件中全局设置此值:
FluentValidation.ValidatorOptions.Global.DisplayNameResolver = (type,member,expression) => member?.Name;
另一种选择是在规则上使用.WithName
来指定该案例的值。