【问题标题】:Client side validation for custom attribute自定义属性的客户端验证
【发布时间】:2015-07-29 16:04:31
【问题描述】:

为什么我的客户端验证不起作用。

属性是:

  [Required(ErrorMessage = "Email address is required")]
  [EmailAddress(ErrorMessage = "Invalid Email Address")]
  [NonCompanyEmailAttribute(ErrorMessage = "Email address of customer required (not company employees)")]
        public string EmailAddress

验证属性是:

public class NonCompanyEmailAttribute : ValidationAttribute, IClientValidatable
{
    public override bool IsValid(object value)
    {
        bool containscompany = !((string)value).ToLower().Contains("@company.com");
        return containscompany;
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        yield return new ModelClientValidationRule
        {
            ErrorMessage = this.ErrorMessage,
            ValidationType = "noncompanyemail"
        };
    }
}

在 JS 中我有:

  $.validator.addMethod("noncompanyemail", function (value, element, params) {
            return value.toLowerCase().indexOf('company.com' > -1);
        });


        $.validator.unobtrusive.adapters.add("noncompanyemail", function (options) {
            options.rules["noncompanyemail"] = true;
            options.messages["noncompanyemail"] = options.message;
        });

jquery.validate.js 和 jquery.validate.unobtrusive.js 包括在内

【问题讨论】:

    标签: asp.net-mvc validation unobtrusive-validation


    【解决方案1】:

    我不确定您所说的“不工作”是什么意思,但您的 jquery 验证函数的格式似乎很奇怪。如果值在任何地方包含 company.com,我假设您希望它返回 false(又名无效)。如果是这样,你的方法应该是这样的:

    $.validator.addMethod("noncompanyemail", function (value, element, params) {
                return (value.toLowerCase().indexOf('company.com') == -1);
            });
    

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 2011-09-09
      • 2014-03-27
      • 2012-03-06
      • 2014-11-03
      • 2011-06-12
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多