#asp.net-mvc-2 #data-annotations
#asp.net-mvc-2 #данные-аннотации
Вопрос:
У меня есть строго типизированное представление, которое привязано к ViewModel, одной из задач которого является фиксирование даты рождения клиентов. Для этого у меня есть несколько полей в ViewModel, определенных следующим образом:
public DateTime DOB {get;set;}
public int? DOBDay
{
get
{
return _DOBDay;
}
set
{
_DOBDay = value;
SetDOB();
}
}
public int? DOBMonth
{
get
{
return _DOBMonth;
}
set
{
_DOBMonth = value;
SetDOB();
}
}
public int? DOBYear
{
get
{
return _DOBYear;
}
set
{
_DOBYear = value;
SetDOB();
}
}
public List<SelectListItem> DOBDayItems { get; set; }
public List<SelectListItem> DOBMonthItems { get; set; }
public List<SelectListItem> DOBYearItems { get; set; }
protected void SetDOB()
{
if (this.DOBDay.HasValue amp;amp; this.DOBMonth.HasValue amp;amp; this.DOBYear.HasValue)
{
DateTime dob = new DateTime(this.DOBYear.Value, this.DOBMonth.Value, this.DOBDay.Value);
//Check within smalldatetime range
if (dob < new DateTime(2079, 6, 6) amp;amp; dob > new DateTime(1900, 1, 1))
{
this.DOB = dob;
}
}
}
Затем это облегчает 3 выпадающих списка в моей форме, привязанных к DOBDay, DOBMonth и DOBYear соответственно (н.б. Это оказалось самым простым методом ввода даты рождения в ряде проведенных нами экспериментов по тестированию пользовательского интерфейса). Затем значение DOB устанавливается всякий раз, когда что-либо из них изменяется, что работает нормально.
Я использую DataAnnotations для проверки формы, которая отлично работает для проверки каждого из 3 выпадающих списков (обязательные / максимальные значения), однако требуется дополнительная проверка, чтобы убедиться, что DOB является действительной датой — 30 февраля 1985 года прошла бы проверку отдельного выпадающего списка, однако она недействительна. Я хотел бы, чтобы это выделяло все 3 элемента управления, но потенциально может быть запущено только из выпадающего списка DOBYear, но я не уверен, как это сделать — возможно ли это?