我将在我的应用中为自定义对象创建一些验证。但是在尝试创建CustomValidation规则时遇到了一些麻烦。我的对象有字段 - BirthDay - 这不是必需的,但如果用户输入它,我需要在简单验证上验证它,例如用户DataType验证 - DataType.DateTime。当我尝试这样做时,我有验证错误 - BirthDay是必需的。当我创建自定义验证并始终返回true时,我有相同的错误。下面是一些代码:
[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。抱歉我的英文=)
答案 0 :(得分:4)
你需要使你的属性可以为空,即
public DateTime? BirthDay { get; set; }
因此它可以具有空值而不需要设置。
您使用CustomValidation
属性的方式似乎也不正确。我相信你需要创建一个派生自ValidationAttribute
基类的类,并在CustomValidation
属性的第一个参数中传递它的类型。