2012-07-13 55 views
4

我创建了诞生这样的日期验证属性:数据anntotation属性。如何设置执行顺序?

public class DateRequired : ValidationAttribute 
    { 
     public override bool IsValid(object value) 
     { 
      DateTime date = Convert.ToDateTime(value); 
      return date != DateTime.MinValue; 
     } 
    } 

    public class DateGraterThanEighteen : ValidationAttribute 
    { 
     public override bool IsValid(object value) 
     { 
      DateTime date = Convert.ToDateTime(value); 
      long ticks = DateTime.Now.Ticks - date.Ticks; 
      int years = new DateTime(ticks).Year; 
      return years >= 18; 
     } 
    } 

I applied attributes like this 

     [DateGraterThanEighteen(ErrorMessage="You must be at least 18")] 
     [DateRequired(ErrorMessage = "Date of birth is required")] 
     public DateTime DateOfBirth { get; set; } 

不管我申请的顺序,DateGraterThanEighteen先执行。我怎样才能让DateRequired先执行?

回答

0

您可以将订单应用于过滤器。不知道你是否能验证属性尝试

[DateGraterThanEighteen(ErrorMessage="You must be at least 18"), Order=1] 
[DateRequired(ErrorMessage = "Date of birth is required"), Order=2] 
public DateTime DateOfBirth { get; set; } 

仅供参考,您拼错了更大的:)

更新:没关系,能不能做到这一点。你需要创建一个ModelValidationProvider