英国日期时间字段的数据注释范围

时间:2010-02-12 12:46:37

标签: asp.net-mvc datetime data-annotations

我想使用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框架进行客户端验证。

有什么建议吗?

由于

2 个答案:

答案 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以获取有关如何执行此操作的示例。