9

私はMVCを使用しています。したがって、ユーザー入力番号が7桁であることを検証したいと思います。

それで私はクラスを書きました。

 public class StduentValidator : AbstractValidator<graduandModel>
    {
        public StduentValidator(ILocalizationService localizationService)
        {                          
           RuleFor(x => x.student_id).Equal(7)
               .WithMessage(localizationService
                    .GetResource("Hire.graduand.Fields.student_id.Required"));                   
        }

しかし、それは機能していません。7桁の数字を検証する方法は?

4

3 に答える 3

35

FluentValidationを使用しているため、.Matchesバリデーターを使用して正規表現の一致を実行する必要があります。

RuleFor(x => x.student_id).Matches("^\d{7}$")....

別のオプションは、次のようなことを行うことです(student_idが数値の場合)。

RuleFor(x => x.student_id).Must(x => x > 999999 && x < 10000000)...

または、GreaterThanおよびLessThanバリデーターを使用することもできますが、上記の方が読みやすくなっています。また、数値が0000001のようなものである場合、上記は機能しないことに注意してください。7桁の文字列に変換し、以下の手法を使用する必要があります。

student_idが文字列の場合、次のようになります。

int i = 0;
RuleFor(x => x.student_id).Length(7,7).Must(x => int.TryParse(x, out i))...
于 2012-10-16T03:52:40.560 に答える
1

あなたはRegexそのために使うことができます

bool x = Regex.IsMatch(valueToValidate, "^\d{7}$");
于 2012-10-16T03:46:37.720 に答える
1

Must拡張機能を使用できます。そして、値を文字列に変換して、.Lengthを使用できるようにします

RuleFor(x => x.student_id).Must(x => x.ToString().Length == 7)
于 2019-05-16T10:34:41.987 に答える