2016-02-05 113 views
0

我有一个int,我想验证与我的模型中的注释。它可以是0或大于或等于100000.我该怎么做?asp.net mvc验证注释为int或者必须是0或大于100000

感谢

+0

分享任何代码,你可以有这么远,我们可以帮助的代码接通到你的项目是什么在起作用。 – Chad

+0

没有内置注释来执行此操作。不过应该很容易写出一个自定义的问题 – Andrei

+1

好问题。谦虚的建议:[“零不是空”](http://programmers.stackexchange.com/questions/134861/how-can-i-explain-the-difference-between-null-and-zero)不要存储当你什么都没有意思时,它就是零 –

回答

0

正如其他人指出,没有一个出来做这个,我知道的方块,但也有自己编写自定义验证属性,你可以使用几个人。我过去使用的一个很好的例子是从Lessthan Greaterthan Validation

0

你必须编写自定义的注解,但是为什么要费心:) 我强烈建议使用Fluent Validation

然后为您解决问题应该是这样的:

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

您可以实现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

0

我会建议使用流利的验证

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); 
相关问题