我试图将数据验证添加到我的DateTime Attribut我想让用户选择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; }
这个自定义验证没有工作,验证没有被执行,我认为我错过了一些简单的事情?
答案 0 :(得分:2)
我同意丹尼尔,
但是我发现当我需要对模型中的属性进行比较时,我使用IValidatableObject
对于大多数小型比较,我发现它更快更容易 你会有一些看起来像这样的
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");
}
}
}
阅读并了解最适合您的内容
答案 1 :(得分:1)
属性本质上是静态的。您是否考虑过编写自己的属性进行验证?网上有几个例子可以让你入门。
您也可以继承RangeAttribute
并根据需要注入。