c# - DateTime 的 MVC3 ValidationAttribute?在 IsValid(...) 中返回 DateTime.Max

标签 c# asp.net-mvc-3 validationattribute

我正在尝试为 DateTime 编写自定义 ValidationAttribute?

但是,当它命中 IsValid(object value) 时,该值已经是 DateTime.Max

我在我的代码中看不到任何东西都设置了这个值,但这意味着我正在努力验证它。

我想要的规则是“Null or After Today”——这意味着如果有一个 Null 值就没问题,但如果有一个值那么我想验证。

public class AfterTodayAttribute : ValidationAttribute, IClientValidatable
{
    public AfterTodayAttribute()
    {
    }

    //Tried this as well...same result
    //protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    //{
    //    return base.IsValid(value, validationContext);
    //}

    public override bool IsValid(object value) 
    {
        //value is already a DateTime and set to DateTime.Max
        var valid = false; // for testing only
        return valid;
    }
}

...
[Display(Description = "Expiry Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
[AfterToday(false, ErrorMessage = "The Limit Expiry Date must be later than Today")]
public DateTime? NewExpiryDate { get; set; }
...

最佳答案

这应该可以解决问题:

public override bool IsValid(object value)
{
    var dt = value as DateTime?;

    return dt == null || dt.Value.Date > DateTime.Today.AddDays(1).AddSeconds(-1);
}

关于c# - DateTime 的 MVC3 ValidationAttribute?在 IsValid(...) 中返回 DateTime.Max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13785892/

相关文章:

vb.net - 部分 View 内的按钮 "submit"

asp.net-mvc-3 - ASP.NET MVC 3 中 ModelState.IsValid 的限制

c# - 如果类没有构造函数,.Net 将类中的所有值设置为 "default values"是什么?

html5-video - 如何在IE8浏览器中播放html5视频

c# - 地铁(MahApps)WPF : Override TabItem style

c# - MVC 网址路由

c# - ASP.NET Core 自定义验证属性未触发

json - 如何序列化具有来自各个属性的所有验证属性的模型?

c# - Visual Studio 2015/C# 6/Roslyn 无法编译 PCL 项目中的 XML 注释

c# - 如何使用 dotnetbrowser 获取 ajax 请求响应正文?