如何限制用户在班级输入的数据类型

时间:2012-08-25 08:15:37

标签: c#

我有以下课程:

public class Reference : AuditableTable
{
     [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")]
     [DisplayName("Order")]
     public int Order { get; set; 
}

使用MVC,Range检查应该阻止用户输入错误数据。但是我没有通过MVC前端的其他代码允许我输入类似999的值。在类级别检查这是否正常,我该如何实现呢?

3 个答案:

答案 0 :(得分:0)

如果要在客户端验证字段,则应使用验证器。在服务器验证的情况下,此代码应该有效。我在谈论asp.net MVC。

答案 1 :(得分:0)

您可以使用:

private bool ValidateModel(dynamic model)
{
   var validationResults = new List<ValidationResult>();
   var ctx = new ValidationContext(model, null, null);
   return Validator.TryValidateObject(model, ctx, validationResults, true);
}

http://msdn.microsoft.com/en-us/library/dd411772.aspx

您可以放置​​任何模型类型而不是动态。

答案 2 :(得分:0)

 public class Reference : AuditableTable
    {
        [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")]
        [DisplayName("Order")]
        public int Range { get; 
        set { 
       if((value < 0) || (value > 99))
        {
        throw new Exception(string.Format("{0} must be between 0 and 99",value.ToString()));
        }
        else
        {
        Range = value;
        }
        }
    }