如何覆盖 JSON 属性 文件名 属性 由 ASP .Net Core 中的 FluentValidation 生成?

How to override JSON property name of file property generated by FluentValidation in ASP .Net Core?

我正在尝试使用 ASP.Net Core 3.1 中的 FluentValidation 验证文件大小,它工作正常,但生成的 属性 名称如下所示:

 {
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "traceId": "|f885b78f-4a52ff23c676c331.",
  "errors": {
    "MyFile.Length": [
      "My file: The max file size allowed is 5 Mb."
    ]
  }
}

问题是生成的 属性 名称是 "MyFile.Length",我希望结果只是 "MyFile"。我当前的代码是:

InsertMovementValidator.cs

public class InsertMovementValidator : AbstractValidator<InsertMovementDTO>
{
    public InsertMovementValidator ()
    {
        RuleFor(x => x.MyFile).SetValidator(new FileValidator());
    }
}

FileValidator.cs

public class FileValidator : AbstractValidator<IFormFile>
{
    public FileValidator()
    {
        RuleFor(x => x.Length).LessThanOrEqualTo(5242880) //5 Megabytes
            .WithName("My file")
            .WithMessage("{PropertyName}: The max file size allowed is 5 Mb");
    }
}

提前致谢。

您可以像下面这样设置验证器:

public class InsertMovementValidator : AbstractValidator<InsertMovement>
{
    public InsertMovementValidator()
    {
        
        RuleFor(x => x.MyFile).SetValidator(new FileValidator()).OverridePropertyName(""); 
    }
}

public class FileValidator : AbstractValidator<IFormFile>
{
    public FileValidator()
    {
        RuleFor(x => x.Length).LessThanOrEqualTo(102400) //100 kb
            .OverridePropertyName("My file")
            .WithName("My file")
            .WithMessage("{PropertyName}: The max file size allowed is 100 Kb");
    }
}

结果: