在父验证器中,我们有多个子验证。宣称像这样
RuleFor(x => x.Country)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage(ValidationErrorMessageCodes.CountryRequired)
.SetValidator(new CountryValidator(countryService)).WithMessage(ValidationErrorMessageCodes.CountryDoesNotExist);
在CountryValidator中我们设置了这个
RuleFor(c => c)
.MustAsync(async candidateCountryCode =>
(await countryService.GetAll())
.Any(x => string.Equals(x.Code, candidateCountryCode, StringComparison.CurrentCultureIgnoreCase)))
.WithMessage(ValidationErrorMessageCodes.CountryDoesNotExist);
当我们习惯使用Validate和Must时,这一切都运行正常,但现在我们使用ValidateAsync和MustAsync来满足使用异步任务的Api中更深层次的调用。
由于以这种方式更改它,我们收到以下错误消息
无法自动确定表达式c =>的属性名称。 C。请通过调用' WithName'来指定自定义媒体资源名称。
如果我将.WithName(" Country")添加到子Validator,那么返回的parameterName是" Country.Country"曾经只是"国家"。
两者都继承自AbstractValidator,父级有一个RequestModel而子进程正在。
我该怎样才能回到"国家"错误?
答案 0 :(得分:0)
升级到最新版本的FluentValidation解决了这个问题