我想使用Data Annotations来验证DateTime字段,但我遇到了问题。根据MSDN(http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute.aspx)上的文档,以下内容应该完成工作
[Range(typeof(DateTime), "1/2/2004", "3/4/2004",
ErrorMessage = "Value for {0} must be between {1} and {2}")]
但是,这标志着我输入的任何日期无效!
起初我以为它没有接受英国约会(当我试过26/2/2004时),但我甚至无法使用日期,如2/2/2004。
我正在使用MVC2中的数据注释,并使用MicrosoftAjax框架进行客户端验证。
有什么建议吗?
由于
答案 0 :(得分:2)
好吧,几年过去了,我重新审视了MVC4的这个问题,我可以告诉你它已经明显解决了。
我创建了一个非常简单的默认MVC4站点,并为日期成员提供了以下属性
[Required]
[DataType(DataType.Date)]
[Range(typeof(DateTime), "1/2/2004", "3/4/2004", ErrorMessage = "Value for {0} must be between {1} and {2}")]
public DateTime BlogDate { get; set; }
验证现在在英国数据系统下完美运行,不允许日期为2004年4月3日,允许日期为4/3/2004或26/3/2004。
我使用的模板利用了代码优先的EF4,但我没有任何理由怀疑它一般没有修复,因为javascript也正常工作。
因此,如果您使用MVC2,这可能仍然是一个问题,但我发现的最佳解决方案是使用MVC4,只要它可用。
答案 1 :(得分:1)
据我所知,RangeAttribute只能验证客户端的数字,你必须编写一个自定义的javascript验证器才能工作......
查看http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx以获取有关如何执行此操作的示例。