覆盖DateTime的默认验证

时间:2013-04-09 21:33:19

标签: asp.net-mvc

我为DateTime创建了一个继承自 RequiredAttribute 的自定义验证属性。出于某种原因,MVC中某些类型的内置DateTime验证覆盖了我的自定义验证,因为当我输入dd作为日期值时,我不断收到错误消息“值'dd'对于Date无效”。如何让它使用我的自定义验证器,以便显示我自己的错误消息?

查看模型

public class MyViewModel
{
    [Required(ErrorMessage = "Name is required")]
    [Display(Name = "Name")]
    public string Name { get; set; }

    [DateValidation(ErrorMessage = "A valid date is required")]
    [Display(Name = "Date")]
    public DateTime Date { get; set; }
}

验证

public class DateValidationAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        DateTime dt;

        return DateTime.TryParse(value.ToString(), out dt);
    }
}

回应拉尔斯的回答: 如何让它使用我的模型的验证属性中创建的错误消息,以便我可以为使用相同验证属性的不同模型属性创建不同的错误消息?

1 个答案:

答案 0 :(得分:0)

IsValid内,您可以更改ErrorMessage

public override bool IsValid(object value)
{
    ErrorMessage = "Date is invalid.";