3

我正在使用 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 日期选择器与相关字段一起使用。

有人可以帮忙吗?

4

1 回答 1

2

您没有指定错误发生的位置,但我的猜测是它是客户端(?)jQuery Validation 不适用于RangeAttribute. 要进行验证,请禁用 jQuery 验证,并且有效输入应通过(服务器)验证。

为了解决这个问题,您必须编写自己的日期范围验证,例如http://blogs.msdn.com/b/stuartleeks/archive/2011/01/25/asp-net-mvc-3-integrating-with- -jquery-ui-date-picker-and-adding-a-jquery-validate-date-range-validator.aspx

或者,您可以查看Data Annotations ExtensionsMVC Foolproof Validation等软件包,看看它们是否可用于解决问题。

于 2012-11-01T20:20:07.757 回答