自定义错误消息不适用于 asp net mvc 3 中的日期时间验证

Arn*_*501 3 validation asp.net-mvc-3

我有一个带有 String 属性和以下数据注释的 ViewModel :

编辑以使用字符串

[DataType(DataType.Date, ErrorMessage="Not Working !!!")]
public String StringBirthDate1 { get; set; }
Run Code Online (Sandbox Code Playgroud)

这就是我的看法

@Html.EditorFor(model => model.StringBirthDate1 )
@Html.ValidationMessageFor(model => model.StringBirthDate1)
Run Code Online (Sandbox Code Playgroud)

如果我运行我的应用程序并输入一个无效的日期,如“---”或 29.02.1900,我不会收到任何验证错误!

Arn*_*501 5

好吧,我已经放弃尝试使用内置 MVC 工具进行数据验证了!

我做了一个自定义验证属性:

public class ValidDateStringAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        DateTime dtout;
        if (DateTime.TryParse(value.ToString(), out dtout ))
        {
            return true;
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的视图模型,用自定义属性装饰:

[ValidDateString(ErrorMessage="Invalid date format")]
public String BirthDate1 { get; set; }
Run Code Online (Sandbox Code Playgroud)

奇迹般有效 :-)