Asp.net mvc 2 多控件上的ASP.net MVC验证

Asp.net mvc 2 多控件上的ASP.net MVC验证,asp.net-mvc-2,data-annotations,Asp.net Mvc 2,Data Annotations,我有一个绑定到ViewModel的强类型视图,其中一个主要功能是捕获客户的出生日期。为此,我在ViewModel中有许多字段,定义如下: public DateTime DOB {get;set;} public int? DOBDay { get { return _DOBDay; } set { _DOBDay = value;

我有一个绑定到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;
            }
        }
    }
public DateTime DOB{get;set;}
公共整数?多拜
{
收到
{
每天返回;
}
设置
{
_多比天=价值;
SetDOB();
}
}
公共整数?多月
{
收到
{
每月返回一次;
}
设置
{
_月=值;
SetDOB();
}
}
公共整数?多宾
{
收到
{
回归年;;
}
设置
{
_年份=价值;
SetDOB();
}
}
公共列表项{get;set;}
公共列表DOBMonthItems{get;set;}
公共列表项{get;set;}
受保护的void SetDOB()
{
if(this.DOBDay.HasValue&&this.DOBMonth.HasValue&&this.DOBYear.HasValue)
{
DateTime dob=新的日期时间(this.DOBYear.Value,this.DOBMonth.Value,this.DOBDay.Value);
//在smalldatetime范围内检查
if(dobnewdatetime(1900,1,1))
{
this.DOB=DOB;
}
}
}
然后,这有助于我的表单上的3个下拉列表,分别绑定到DOBDay、dobmount和DOBYear(注意:在我们进行的许多用户体验测试实验中,这已被证明是输入出生日期的最简单方法)。然后,只要其中任何一个发生变化,都会设置DOB,这很好

我正在使用DataAnnotations来验证表单,该表单可以很好地验证3个下拉列表(必需/最大值)中的每一个,但是需要额外的验证来确保DOB是一个有效日期-1985年2月30日将通过单个下拉列表验证,但无效。我希望这能突出显示所有3个控件,但可能只会在DOBYear下拉列表中被解雇,但我不确定如何执行此操作-可能吗