You could create a DateRange validator like this:
[AttributeUsage(AttributeTargets.Property)]
public class DateIsNextYear : ValidationAttribute
{
public DateIsNextYear(string errorMessage = "")
{
ErrorMessage = errorMessage;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if ((value == null) || (string.IsNullOrEmpty(value.ToString())))
return null;
try
{
var date = DateTime.Parse(value.ToString());
var nextyear = DateTime.Now.Year + 1;
if ((date >= new DateTime(nextyear , 1, 1)) && (date <= new DateTime(nextyear , 12, 31)))
return ValidationResult.Success;
return new ValidationResult(ErrorMessage);
}
catch
{
return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
}
}
}
And use it for yourobject:
public class MyObject
{
[DateIsNextYear("This date is not next year!")]
public DateTime DateToFillIn { get; set; }
}
You can easily modify this to validate only dates higher than today etc..