使用变量作为范围数据注释验证器

时间:2011-07-07 19:21:29

标签: model-view-controller data-annotations

我正在尝试简化数据模型的验证。我想使用一个变量来表示DataAnnotation Range验证器的属性的上限。像这样。

namespace MvcGMDemo.Models
{
    public class Vehicle
    {
        private static const int year;
        //public Vehicle()
        //{
        //    year = DateTime.Now.Year;
        //}

        public int VehicleId { get; set; }

        [Required]
        public string Vin { get; set; }
        [Required]
        public string Make { get; set; }
        [Required]
        public string Model { get; set; }

        [Required]
        [Range( DateTime.Now.Year - 5,  DateTime.Now.Year)]
        public int Year { get; set; }
    }
}

我可以放一个常量,但是每个新的一年都需要重新编译代码吗?非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

您应该为此构建自定义验证器。沿着这些方向进行一些调整(根据您的情况调整):

public class RangeLast5Years : RangeAttribute
{
  public RangeLast5Years() :
    base(typeof(int), DateTime.Now.Year - 5, DateTime.Now.Year) { }
}

并按如下方式使用:

[RangeLast5Years]  
public int Year { get; set; }

希望这会有所帮助,如果没有,请告诉我。感谢。