asp.net-mvc - 使用 Entity Framework 4 数据注释进行日期范围验证

标签 asp.net-mvc entity-framework-4 data-annotations

我正在使用 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

或者,您可以查看诸如 Data Annotations Extensions 之类的软件包。或MVC Foolproof Validation看看它们是否可以用来解决问题。

关于asp.net-mvc - 使用 Entity Framework 4 数据注释进行日期范围验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183647/

相关文章:

c# - ASP.NET ViewModel 替代方案

jquery - 如何为日期时间选择器文本框应用样式

jquery - 路由域子文件夹问题

c# - EF 中多对多连接的最佳实践

asp.net-mvc-3 - Entity Framework - 连接字符串 - 不支持关键字 'Data Source'

c# - ASP.NET 网络 API : model is valid if error message is set from resources

asp.net-mvc - Angular ng-include cshtml 页面

asp.net-mvc - 保护 ASP.Net MVC 站点

c# - Entity Framework 4 和同义词

ASP.NET 数据注释 : How to validate a List of string?