我需要驗證郵政編碼, - 它總是必須有一個值(非條件)條件和非條件在一個良好的驗證規則
// 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));
我的目標是一般規則和美國規則中的一個規則 結合起來,我曾嘗試:
// 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");
我怎麼可以用一條規則寫這個?
什麼樣的數據類型是Zip?一個字符串? 你有什麼ValidatorOptions.CascadeMode設置爲? – Stout01
Zip是字符串,CascadeMode是Continue。 – user2822208
你能發佈你的IsUnitedStates方法嗎? – Stout01