Проверка ASPC MVC на нескольких элементах управления - PullRequest
1 голос
/ 11 апреля 2011

У меня строго типизированное представление, привязанное к 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 && this.DOBMonth.HasValue && 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) && dob > new DateTime(1900, 1, 1))
            {
                this.DOB = dob;
            }
        }
    }

Это облегчает 3 раскрытия в моей форме, привязанных к DOBDay, DOBMonth и DOBYear соответственно (нет. Это оказалось самым простым методом ввода даты рождения в ряде проведенных нами экспериментов по тестированию пользовательского опыта). DOB затем устанавливается каждый раз, когда любой из них изменяется, что прекрасно работает.

Я использую DataAnnotations для проверки формы, которая отлично подходит для проверки каждого из 3 раскрывающихся списков (обязательные / максимальные значения), однако для подтверждения того, что DOB является действительной датой, требуется дополнительная проверка - 30 февраля 1985 года пройдет однако отдельная проверка выпадающего списка недействительна. Я хотел бы, чтобы это выделило все 3 элемента управления, но потенциально может быть запущено только из выпадающего списка DOBYear, но я не уверен, как это сделать - возможно ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...