2009-04-23 7 views
1

私のアプリでカスタムオブジェクトの検証をいくつか作成します。しかし、私はCustomValidationルールを作成しようとするといくつか問題があります。私のオブジェクトにはフィールドBirthDayがありますが、これは必須ではありませんが、ユーザーが入力した場合、単純な検証でそれを検証する必要があります。たとえば、ユーザーDataType検証-DataType.DateTimeです。私はそれをしようとするとき私は検証エラーがある - BirthDayが必要です。私はカスタム検証を作成し、常にtrueを返すとき私は同じエラーがあります。いくつかのコード行の下に:asp.net mvc DataAnnotation Validation

[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; }

ので、それがnull値を持って設定する必要がないことができ、あなたのproperyをNULLにする必要があります。

また、CustomValidation属性を使用する方法は正しくはないようです。 ValidationAttribute基底クラスから派生したクラスを作成し、その型をCustomValidation属性の最初のパラメータに渡す必要があると思います。

関連する問題