我正在尝试在我的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()
)
{ }
}
答案 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;
}
}