Asp.net mvc 2 多控件上的ASP.net MVC验证
我有一个绑定到ViewModel的强类型视图,其中一个主要功能是捕获客户的出生日期。为此,我在ViewModel中有许多字段,定义如下: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;
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下拉列表中被解雇,但我不确定如何执行此操作-可能吗