2009-04-23 151 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屬性的第一個參數中傳遞它的類型。