数据非认证自定义归因 [日期时间]



我正在尝试将数据验证添加到我的日期时间属性中,但我想强制用户选择DateTime.Now和小于DateTime.now.addyears(+1)一年后的日期这是我的代码:

 public class DateDebut : ValidationAttribute
        {
            public override bool IsValid(object value)
            {
                if (value == null) return false;
                DateTime enteredDate = (DateTime)value;
                if ( (enteredDate >= DateTime.Now) && (enteredDate <= DateTime.Now.AddYears(+1)))
                    return true;
                else
                    return false;
            }
        }
        [Required]
        [Display(Name = "De : ")]
        [DataType(DataType.Date)]
        [DateDebut(ErrorMessage="Date invalide")]
        public DateTime dd { get; set; }

这个自定义验证不起作用,验证没有执行,人工智能认为我错过了一些非常简单的东西?

我完全同意丹尼尔的观点,

但是,我

发现当我需要对模型中的属性进行比较时,我使用 IValidatableObject

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.ivalidatableobject.aspx

我发现对于大多数小型类型的比较来说,它更快、更容易你会有一些看起来像这样的

public class myModel : IvalidatableObject
{
 string debut = DateTime.Now.ToShortDateString();
 string fin = DateTime.Now.AddYears(+1).ToShortDateString(); 
 [Required]
 [Display(Name = "De : ")]
 [DataType(DataType.Date)]
 public DateTime dd { get; set; }
  public IEnumerable<ValidationResult> Validate()
  {
    if(this.debut > this.fin)
    {
      yield return new ValidationResult("debut cannot be greated then fin");
    }
  }
}

阅读并了解最适合您的内容

属性本质上是静态的。您是否考虑过编写自己的属性进行验证?网络上有几个示例应该可以帮助您入门。

您还可以从RangeAttribute继承并根据需要注入它。

最新更新