2009-04-23 23 views
1

Ich werde einige Validierung für benutzerdefinierte Objekt in meiner App erstellen. Aber ich habe Probleme, wenn ich versuche, die CustomValidation-Regel zu erstellen. Mein Objekt hat Feld - BirthDay - was nicht erforderlich ist, aber wenn Benutzer es eingeben, muss ich es nach einer einfachen Validierung validieren, zum Beispiel Benutzer-DataType-Validierung - DataType.DateTime. Wenn ich versuche, es zu tun, habe ich Validierungsfehler - BirthDay ist erforderlich. Wenn ich benutzerdefinierte Validierung erstellen und immer True zurückgeben, habe ich denselben Fehler. Unterhalb einiger Codezeilen:asp.net mvc DataAnnotation Validierung

[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. sorry für mein Englisch =)

Antwort

4

Sie benötigen propery nullable, dh

public DateTime? BirthDay { get; set; }

so kann sie haben einen Nullwert und nicht erforderlich, um eingestellt werden.

Auch die Art, wie Sie das CustomValidation Attribut verwenden scheint nicht richtig. Ich glaube, dass Sie eine Klasse erstellen müssen, die von ValidationAttribute Basisklasse abgeleitet ist, und übergeben Sie ihren Typ in CustomValidation Attributs ersten Parameter.

Verwandte Themen