3

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

有什么建议么?

谢谢

4

2 回答 2

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; }

验证现在在英国数据系统下完美运行,不允许日期为 2/1/2004,允许日期为 4/3/2004 或 26/3/2004。

我使用的模板利用了代码优先的 EF4,但我没有任何理由怀疑它没有得到普遍修复,因为 javascript 也可以正常工作。

因此,如果您使用的是 MVC2,这可能仍然是一个问题,但我发现的最佳解决方案是使用 MVC4,只要它对您可用。

于 2013-09-03T12:51:20.730 回答
1

据我所知 RangeAttribute 只能在客户端验证数字,你必须编写一个自定义的 javascript 验证器才能工作......

查看http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx以获取有关如何执行此操作的示例。

于 2010-02-12T15:04:52.410 回答