c# - 如何仅验证 7 位数字?

标签 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"));                   
        }

但它不起作用。 如何验证 7 位数字?

最佳答案

由于您使用的是 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))...

关于c# - 如何仅验证 7 位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907242/

相关文章:

C# 流读取器 ReadToEnd() 缺少最后一个字符

c# - 将代码从 C++ 迁移到 C#

c# - Bitmap.LockBits 和 Graphics.FromImage 在 C# 中是否可以组合

asp.net-mvc - ASP.NET MVC HttpPost 返回 View() 导致错误,因为它找不到 cshtml

c# - 当设置 View 不验证的规则时,MVC 具有流畅的验证

asp.net-core - EditorFor Tag Helper 在使用 FluentValidator 时不呈现验证属性

c# - Fluentvalidation 无法使用本地化名称

c# - 将安全的 SQL 语句创建为字符串

javascript - 使用微调器单击按钮上的 BlockUI

asp.net-mvc - 带有路由名称的mvc 4 beginform