如何在FluentValidation中设置选项?

问题描述

我正在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来指定该案例的值。