ASP.net Проверка MVC для нескольких элементов управления

#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, но я не уверен, как это сделать — возможно ли это?