2009-04-23 143 views
1

我将在我的应用程序中为自定义对象创建一些验证。但是当我尝试创建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.对不起,我的英语=)

回答

4

你需要让你的属性格式可为空,即

public DateTime? BirthDay { get; set; }

所以它可以有一个空值,而不是需要进行设置。

此外,您使用CustomValidation属性的方式看起来不正确。我相信你需要创建一个从ValidationAttribute基类派生的类,并在CustomValidation属性的第一个参数中传递它的类型。