Is there a RangeAttribute for DateTime?
Use this attribute:
public class CustomDateAttribute : RangeAttribute
{
public CustomDateAttribute()
: base(typeof(DateTime),
DateTime.Now.AddYears(-6).ToShortDateString(),
DateTime.Now.ToShortDateString())
{ }
}
Even though there is an overload for Range
attribute that accepts type and boundary values of that type and allows something like this:
[Range(typeof(DateTime), "1/1/2011", "1/1/2012", ErrorMessage="Date is out of Range")]
what you are trying to achieve is not possible using this attribute. The problem is that attributes accept only constants as parameters. Obviously neither DateTime.Now
nor DateTime.Now.AddYears(-6)
are constants.
However you can still do this creating your own validation attribute:
public class DateTimeRangeAttribute : ValidationAttribute
{
//implementation
}