自定义验证属性不触发 jQuery 验证
Posted
技术标签:
【中文标题】自定义验证属性不触发 jQuery 验证【英文标题】:Custom Validate Attribute not triggering jQuery validate 【发布时间】:2019-07-15 17:46:40 【问题描述】:我正在努力找出自定义验证属性的问题,以及为什么它与非自定义验证属性的行为不同。
我已经设置了一个非常基本的自定义验证属性作为示例:
public class AlwaysFalse : ValidationAttribute, IClientValidatable
public IEnumerable<ModelClientValidationRule>
GetClientValidationRules(ModelMetadata metadata, ControllerContext
context)
yield return new ModelClientValidationRule
ErrorMessage = this.ErrorMessage,
ValidationType = "alwaysfalse"
;
protected override ValidationResult IsValid(object value,
ValidationContext validationContext)
return new ValidationResult("Error");
我已将该属性应用于我的模型中的一个属性。
我写的自定义js如下:
jQuery.validator.addMethod('falseMethod', function (value, element,
params)
return false;
, '');
// and an unobtrusive adapter
jQuery.validator.unobtrusive.adapters.add('alwaysfalse', , function
(options)
options.rules['falseMethod'] = true;
options.messages['falseMethod'] = options.message;
);
我已遵循以下帖子中的建议: Perform client side validation for custom attribute
当我调用我的控制器 POST 函数时,验证会正常进行。但是我希望它被触发类似于其他validationAttributes。例如,我还在我的一个模型属性上设置了范围验证属性,一旦我在此字段中输入无效信息,就会将“input-validation-error”类分配给相关的输入字段。
任何帮助/协助将不胜感激。
如果我可以提供更多信息,请告诉我。
【问题讨论】:
【参考方案1】:好的,现在回答这个问题。
我对 C# 很陌生,并没有意识到将 asp.NET 核心作为我的目标框架和尝试使用 .Net 类之间的区别。
我还收到有关 Web.MVC 类未按预期工作的警告。
论坛帖子解决了我的问题: ASP.Net Core MVC - Client-side validation for custom attribute
更改为使用 Microsoft.AspNetCore.Mvc.ModelBinding.Validation 的 IClientModelValidator 类;
【讨论】:
以上是关于自定义验证属性不触发 jQuery 验证的主要内容,如果未能解决你的问题,请参考以下文章