2017-06-14 21 views
1

親バリデータでは、複数の子検証があります。我々は検証しなければならず、を使用するために使用された場合、このFluentValidation MustAsync子が親プロパティ値を失う

  RuleFor(c => c) 
      .MustAsync(async candidateCountryCode => 
       (await countryService.GetAll()) 
       .Any(x => string.Equals(x.Code, candidateCountryCode, StringComparison.CurrentCultureIgnoreCase))) 
      .WithMessage(ValidationErrorMessageCodes.CountryDoesNotExist); 

これは、すべてうまくいきましたが、今私たちはより深い呼び出しを満たすためにValidateAsyncとMustAsyncを使用している設定CountryValidatorでこの

  RuleFor(x => x.Country) 
      .Cascade(CascadeMode.StopOnFirstFailure) 
      .NotEmpty().WithMessage(ValidationErrorMessageCodes.CountryRequired) 
      .SetValidator(new CountryValidator(countryService)).WithMessage(ValidationErrorMessageCodes.CountryDoesNotExist); 

のように宣言Apiではすべて非同期タスクを使用しています。

それを私たちは、次のエラーメッセージ

プロパティ名が自動的に=> C、Cの発現のために決定することができませんでした取得この方法を変更して以来。 'WithName'を呼び出してカスタムプロパティ名を指定してください。

子Validatorに.WithName( "Country")を追加すると、返されるparameterNameは "Country.Country"でしたが、以前は "Country"でした。

両方とも、RequestModelを持つ親とその子だけをAbstractValidatorから継承します。

「カントリー」エラーに戻すにはどうすればよいですか?

答えて

0

FluentValidationの最新バージョンにアップグレードするとこの問題が解決されます

関連する問題