我使用 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 日期选择器与相关字段一起使用。
有人可以帮忙吗?
您没有指定错误发生的位置,但我的猜测是它是客户端(?) 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
或者,您可以查看诸如数据注释扩展 or MVC 万无一失的验证看看它们是否可以用来解决问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)