我正在使用Entity Framework 4为ASP.NET MVC3 / Razor2 Web应用程序提供模型。我正在使用DataAnnotations来实现验证。我需要将一些日期限制在SQL smalldatetime类型接受的范围内。
我的问题是我无法让RangeAttribute在日期字段中正常工作。相关字段的模型元数据定义是:
[Display(ResourceType = typeof(Resources.Patient), Name = "DateOfBirth_Name")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
[Range(typeof(DateTime), "01/01/1900", "06/06/2079", ErrorMessageResourceType = typeof(Resources.Patient), ErrorMessageResourceName = "DateOfBirth_Range")]
public System.DateTime DateOfBirth { get; set; }
使用此代码,无论我在日期字段中输入什么值,应用程序都会将其视为无效。如果它是相关的,我也使用JQuery-UI日期选择器和相关字段。
有人可以帮忙吗?
答案 0 :(得分:2)
您没有指定错误发生的位置,但我的猜测是它是客户端(?)jQuery验证与RangeAttribute
不兼容。要验证,请禁用jQuery验证,有效输入应通过(服务器)验证。
要解决此问题,您必须编写自己的日期范围验证,例如http://blogs.msdn.com/b/stuartleeks/archive/2011/01/25/asp-net-mvc-3-integrating-with-the-jquery-ui-date-picker-and-adding-a-jquery-validate-date-range-validator.aspx
或者,您可以查看Data Annotations Extensions或MVC Foolproof Validation等软件包,看看它们是否可用于解决问题。