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

3

我想使用数据注释(Data Annotations)来验证日期时间字段,但是我遇到了问题。根据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个回答

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。


EF Code-First与这个答案有什么关系?这种验证从未接近您的DAL。 - ProfK

1

我目前的问题是无法在服务器端使其正常工作!客户端是我必须在服务器端工作正常后解决的问题。 - Alex White
好的,对我来说它有效,你是如何显示你的字段的?为了让你的属性起作用,我认为你必须使用Html.EditorFor或Html.Editor方法。 - moi_meme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接