2009-08-31 15 views
0

Je vois les attributs ValidateIsLesser et ValidateIsGreater. Mais que faire si je veux faire un ValidateIsLesserOrEqual et/ou ValidateIsGreaterOrEqual. Ai-je juste besoin d'écrire ces attributs personnalisés ou y a-t-il des capacités prédéfinies pour cela que j'ai du mal à trouver?Les validateurs Castle comment valider est inférieur/supérieur ou égal

[ValidateNonEmpty] 
[ValidateDate] 
[ValidateIsLesser(IsLesserValidationType.Date, "EndDate", "Start Date must be before End Date.")] 
public DateTime StartDate { get; set; } 

[ValidateNonEmpty] 
[ValidateDate] 
[ValidateIsGreater(IsGreaterValidationType.Date, "StartDate", "End Date must be after the Start Date.")] 
public DateTime EndDate { get; set; } 

Répondre

2

Vous pouvez utiliser le ValidateSelf attribut et fournir votre propre validation pour les comparaisons OrEqual:

[ValidateNonEmpty] 
[ValidateDate] 
public DateTime StartDate { get; set; } 

[ValidateNonEmpty] 
[ValidateDate] 
public DateTime EndDate { get; set; } 

[ValidateSelf] 
public void ValidateDate(ErrorSummary errors) 
{ 
    if (StartDate >= EndDate) 
     errors.RegisterErrorMessage("StartDate", "Start date must be earlier than end date."); 
} 
+0

idée géniale. cela ressemble à une technique utile pour de nombreuses autres situations! –