【问题标题】:Unobtrusive Validation Javascript不显眼的验证 Javascript
【发布时间】:2013-10-24 23:52:38
【问题描述】:

我第一次尝试编写自己的验证脚本。我已经学习了几个教程,并且已经让它们开始工作,现在尝试从头开始理解其背后的逻辑,这是我的自定义:

属性:

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class DateGreaterThanTodayAttribute: ValidationAttribute, IClientValidatable
{
    public DateGreaterThanTodayAttribute(): base("{0} must be greater than today")
    { 
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value != null)
        {
            var valueAsDate = (DateTime)value;

            if (valueAsDate < DateTime.Now)
            {
                var errorMessage = FormatErrorMessage(validationContext.DisplayName);
                return new ValidationResult(errorMessage);
            }
        }

        return ValidationResult.Success;
    }



    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule();
        rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
        rule.ValidationType = "dategreaterthantoday";
        rule.ValidationParameters.Add("today", DateTime.Now);
        yield return rule;
    }
}
}

JS:

$.validator.addMethod("dategreaterthantoday", function (value, element, params) {
if (value) {
    var valueAsDate = Date.parse(value);

    if (valueAsDate < Date.now)
        return false;
 }
return true;
});
$.validator.unobtrusive.adapters.addBool("dategreaterthantoday")

服务器端验证工作正常,但我仍然对必须在客户端代码上传递的参数感到有些困惑,如果有人可以帮助我理解为什么客户端验证不起作用,我不会寻找一个简单的解决方案,但解释我做错了什么以及如何解决它。

提前致谢!

【问题讨论】:

    标签: jquery asp.net-mvc validation asp.net-mvc-4


    【解决方案1】:

    一个简单的错误,我没有使用 Date.Now,而是将其更改为 new Date()(Javascript 代码),效果很好。

    【讨论】:

      猜你喜欢
      • 2011-07-09
      • 2011-05-14
      • 1970-01-01
      • 2011-07-22
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多