使用DataAnnotations对Date进行MVC验证

时间:2010-08-01 11:21:20

标签: asp.net-mvc validation

这是我的Model类

public class Model
{
    [DataType(DataType.DateTime, ErrorMessage = "My error message")]
    public DateTime Day { get; set; }
}

当我尝试输入错误的值例如“notdate”时,我收到了错误 “价值'notdate'对Day来说无效。”而不是我指定的ErrorMessage“我的错误消息”。

我使用ASP.NET MVC 3.0 beta。这是一个错误?

2 个答案:

答案 0 :(得分:1)

您要描述的行为有几点需要注意。

首先,您收到此错误,因为在尝试将字符串值'notdate'分配给DateTime字段时会抛出异常。发生这种情况时,任何与该字段关联的验证消息都将被通用消息覆盖:值“{0}”对{1}无效。

其次,基础DataTypeAttribute实际上不对该字段执行任何验证。使用Reflector,您将看到DataTypeAttribute.IsValid()方法声明如下:

public override bool IsValid(object value)
{
    return true;
}

希望这有帮助。

答案 1 :(得分:0)

不,这是现有模型装订器的默认功能。

DataType与基本模型绑定无关,不会覆盖基本的模型绑定错误。