asp.net mvc DataAnnotation验证
问题描述:
我将在我的应用程序中为自定义对象创建一些验证。但是当我尝试创建CustomValidation规则时遇到了一些麻烦。我的对象有字段 - BirthDay - 这不是必需的,但如果用户输入它,我需要验证它在简单的验证,例如用户DataType验证 - DataType.DateTime。当我尝试这样做时,我有验证错误 - 生日是必需的。当我创建自定义验证,并始终返回true我有同样的错误。以下几行代码:asp.net mvc DataAnnotation验证
[MetadataType(typeof(User.Metadata))]
public class User
{
#region Metadata
private class Metadata
{
[Required(ErrorMessage="Name is required")]
[StringLength(5, ErrorMessage="Max Length is 5")]
public string Name { get; set; }
[CustomValidation(typeof(User), "ValidateBirthDay", ErrorMessage="We have trouble.")]
public DateTime BirthDay { get; set; }
}
#endregion
public static bool ValidateBirthDay(object value)
{
return true;
}
public int? ID { get; set; }
public string Name { get; set; }
public DateTime BirthDay { get; set; }
}
p.s.对不起,我的英语=)
答
你需要让你的属性格式可为空,即
public DateTime? BirthDay { get; set; }
所以它可以有一个空值,而不是需要进行设置。
此外,您使用CustomValidation
属性的方式看起来不正确。我相信你需要创建一个从ValidationAttribute
基类派生的类,并在CustomValidation
属性的第一个参数中传递它的类型。