如何只验证7位数?

use*_*351 6 c# asp.net-mvc fluentvalidation

我正在使用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"));                   
        }
Run Code Online (Sandbox Code Playgroud)

但它没有用.如何验证7位数字?

Eri*_*sch 18

由于您使用的是FluentValidation,因此您希望使用.Matches验证程序来执行正则表达式匹配.

RuleFor(x => x.student_id).Matches("^\d{7}$")....
Run Code Online (Sandbox Code Playgroud)

另一个选择是做这样的事情(如果student_id是一个数字):

RuleFor(x => x.student_id).Must(x => x > 999999 && x < 10000000)...
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用GreaterThan和LessThan验证器,但上面更容易阅读.另请注意,如果数字类似于0000001,那么上面的内容将不起作用,您必须将其转换为7位数的字符串并使用以下技术.

如果student_id是一个字符串,那么这样的事情:

int i = 0;
RuleFor(x => x.student_id).Length(7,7).Must(x => int.TryParse(x, out i))...
Run Code Online (Sandbox Code Playgroud)