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 回答