Я ввел две аннотации к атрибуту date
.Одним из них является проверка диапазона дат (например, от 1 дня до 15 дней спустя), другим - проверка диапазона времени (например, с 8:30 до 16:30).Если значение не соответствует ни одной из двух проверок, я хочу, чтобы на веб-странице отображалось сообщение об ошибке CustomDateRange
, а не CustomTimeRange
.На данный момент происходит противоположная ситуация.
[Required]
[CustomDateRange(ErrorMessage = "Your reservation time should be at least 24 hours and at most 15 days in advance.")]
[CustomTimeRange]
public DateTime? date { get; set; }
public class CustomDateRangeAttribute : RangeAttribute
{
public CustomDateRangeAttribute() : base(typeof(DateTime), DateTime.Now.AddDays(1).ToString(), DateTime.Now.AddDays(15).ToString())
{ }
}
public class CustomTimeRangeAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
try
{
DateTime dt = (DateTime)value;
TimeSpan ts = dt.TimeOfDay;
TimeSpan start = new TimeSpan(8, 30, 0);
TimeSpan end = new TimeSpan(16, 30, 0);
if (ts >= start && ts <= end)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Your reservation time should be with in the openning hours, which is from 8.30am to 4:30pm.");
}
}
catch (Exception e)
{
return new ValidationResult("Invalid time input!");
}
}
}