【问题标题】:asp.net mvc validation annotation for int either must be 0 or greater than 100000int 的 asp.net mvc 验证注释必须为 0 或大于 100000
【发布时间】:2016-03-27 21:04:37
【问题描述】:

我有一个 int,我想在我的模型中使用注释进行验证。它可以是 0 或大于或等于 100000。我该怎么做?

谢谢

【问题讨论】:

  • 分享您目前可能拥有的任何代码,我们可以帮助您调整代码以适应您的项目。
  • 没有内置注释可以做到这一点。但是应该很容易编写自定义的
  • 好问题。谦虚的建议:"zero is not null" 当你毫无意义时不要存储零。

标签: asp.net asp.net-mvc data-annotations


【解决方案1】:

正如其他人所说,据我所知,没有一个开箱即用的方法可以做到这一点,但是有几个人已经编写了可以使用的自定义验证属性。我过去使用的一个很好的例子来自Lessthan Greaterthan Validation

【讨论】:

    【解决方案2】:

    您必须编写自定义注释,但为什么要打扰 :) 我强烈推荐使用Fluent Validation

    那么您的问题的解决方案将如下所示:

    RuleFor(x => x.Property)
                    .GreaterThanOrEqualTo(0)
                    .LessThanOrEqualTo(100000)
                    .WithMessage("must be in range of 0-100000");
    

    【讨论】:

      【解决方案3】:

      您可以实现IValidatableObject 并提供您自己的自定义验证:

      类似:

      public class MyModel : IValidatableObject
      {
          public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
          {
              //todo implement your logic here
                   yield return new ValidationResult("Must be 0 or >= 1000");
          }    
      }
      

      IValidatableObject.Validate

      【讨论】:

        【解决方案4】:

        我建议使用 Fluent Validation

        using FluentValidation;
        ...
        
        public class IntValidator : AbstractValidator<int>
        {
            public IntValidator()
            {
                RuleFor(x => x.Property)
                                .Equal(0).GreaterThanOrEqualTo(100000)
                                .WithMessage("must be  0 or greater than 100000");
            }
        }
        

        然后

        int intvariable;
        IntValidator validator=new IntValidator();
        ValidationResult result= validator.Validate(intvariable);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-04-01
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-25
          相关资源
          最近更新 更多