を支配する - それは常に値(非条件付き)を持っている必要があります私は郵便番号、 を検証する必要が
// General Rule:
RuleFor(m => m.Zip).NotEmpty()
.WithMessage("Zip code is required.");
それは米国でなら、値が正規表現と一致する必要があります(条件付き)
// United States Rule:
RuleFor(m => m.Zip)
.Matches(ZipCodeRegEx)
.WithMessage("Invalid Zip Code")
.When(m => IsUnitedStates(m.CountryCode));
私の目標は、1つのルール で一般的なルールと米国のルールを組み合わせることで、私が試してみました:
// doesn't check general rule for non-us
RuleFor(m => m.Zip)
.NotEmpty()
.WithMessage("Zip code is required.")
.Matches(ZipCodeRegEx)
.When(m => IsUnitedStates(m.CountryCode))
.WithMessage("Invalid Zip Code");
// doesn't check general rule for non-us
RuleFor(m => m.Zip)
.NotEmpty()
.When(m => true)// always
.WithMessage("Zip code is required.")
.Matches(ZipCodeRegEx)
.When(m => IsUnitedStates(m.CountryCode))
.WithMessage("Invalid Zip Code");
これを1つのルールでどのように書くことができますか?
どのデータ型がZipですか?文字列? ValidatorOptions.CascadeModeには何が設定されていますか? – Stout01
Zipは文字列、CascadeModeは続行です。 – user2822208
IsUnitedStatesメソッドを投稿できますか? – Stout01