一个Fluent验证规则中的条件和非条件

时间:2017-03-31 17:09:17

标签: c# asp.net-mvc fluentvalidation

我需要验证邮政编码, - 它总是必须有一个值(非条件)

// 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" );

我如何在一条规则中写这个?

1 个答案:

答案 0 :(得分:-1)

在一条规则中无法做到这一点。 FluentValidation并非旨在支持该案例。