首页 > 解决方案 > 自定义验证属性不适用于 jquery 不显眼

问题描述

我正在尝试将自定义模型验证属性添加到表单上的出生日期字段。当我提交日期不正确的表单时,该属性本身会导致验证失败。

但是,我正在使用 jquery 不显眼的验证,并且虽然标准模型验证属性被触发并阻止表单提交,但这个自定义的却没有。

我的自定义属性如下:

public class DateMustBeInThePast : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        if (value == null) return true;

        var date = (DateTime)value;
        return date < DateTime.Now;

    }
}

我已将其应用于我的模型字段,如下所示:

[Required(ErrorMessage = "Please enter a valid date")]
    [DisplayName("Date of Birth")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    [DateMustBeInThePast(ErrorMessage = "Date of Birth must be in the past")]
    public DateTime? Dob { get; set; }

因此,字段等所有属性都是必需的,并且必须采用正确的格式,但在提交表单之前不会检查“DateMustBeInThePast”。

我已经在我的视图中包含了jquery.validate.jsjquery.validate.unobtrusive.js脚本。

有人可以为我指出正确的方向,以了解如何获得验证以检查此规则吗?

标签: jqueryunobtrusive-validation

解决方案


推荐阅读