开发者

ASP.net MVC Validation on mutiple controls

开发者 https://www.devze.com 2023-02-23 07:08 出处:网络
I have a strongly typed view which is bound to a ViewModel, one prupose of which is to capture the customers date of birth.To do this I have a number of fields within the ViewModel, defined as follows

I have a strongly typed view which is bound to a ViewModel, one prupose of which is to capture the customers date of birth. To do this I have a number of fields within the ViewModel, defined as follows:

    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()开发者_如何学JAVA;
        }
    }
    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;
            }
        }
    }

This then facilitates 3 dropdowns on my form, bound to DOBDay, DOBMonth and DOBYear respectively (n.b. this has proven to be the easiest method of entering a date of birth in a number of user experience testing experiments we have carried out). The DOB is then set whenever any of these is changed which works fine.

I am using DataAnnotations to validate the form which works fine for validating each one of the 3 dropdowns (required / max values) however there is the additional validation needed to ensure that DOB is a valid date - 30 Feb 1985 would pass the individual dropdown validation however is not valid. I would like this to highlight all 3 controls, but potentially only be fired by the DOBYear drop down but am not sure how to go about this - is it possible?

0

精彩评论

暂无评论...
验证码 换一张
取 消