我需要验证邮政编码, - 它总是必须有一个值(非条件)
// 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" );
我如何在一条规则中写这个?
答案 0 :(得分:-1)
在一条规则中无法做到这一点。 FluentValidation并非旨在支持该案例。