ASP.NET MVC 5:为DateTime范围属性创建自定义验证

时间:2018-03-26 18:58:56

标签: asp.net-mvc

我正在尝试在我的MVC 5 Web应用程序中创建自定义属性,以验证DateTime字段是否在当前日期的30到50天内。如果日期不在30到50天的窗口之间,则会引发错误。我尝试使用this post来构建我的属性,但我不确定我的代码在哪里出错。目前,此代码已构建,但在输入无效日期时没有任何反应。

public class CustomDateAttribute : RangeAttribute
{
    public CustomDateAttribute()
      : base(typeof(DateTime),
          DateTime.Now.AddDays(30).ToShortDateString(),
          DateTime.Now.AddDays(50).ToShortDateString()
        )
    { }
}

1 个答案:

答案 0 :(得分:1)

这应该做你正在寻找的事情。您不一定需要从RangeAttribute类继承以获得所需的功能。

[AttributeUsage(AttributeTargets.Property)]
public class CustomDateAttribute : ValidationAttribute
{
  public CustomDateAttribute(string errorMessage) : base(errorMessage) { }

  public override bool IsValid(object value)
  {
    if (value == null) return false;

    DateTime? dateTime = value as DateTime?;

    if (dateTime.HasValue)
    {
      return dateTime.Value >= DateTime.Now.AddDays(30) && dateTime.Value <= DateTime.Now.AddDays(50);
    }

    return false;
  }
}