【问题标题】:Custom Validate Attribute not triggering jQuery validate自定义验证属性不触发 jQuery 验证
【发布时间】: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”类分配给相关的输入字段。

任何帮助/协助将不胜感激。

如果我可以提供更多信息,请告诉我。

【问题讨论】:

    标签: c# jquery validation model-view-controller attributes


    【解决方案1】:

    好的,现在回答这个问题。

    我对 C# 很陌生,并没有意识到将 asp.NET 核心作为我的目标框架和尝试使用 .Net 类之间的区别。

    我还收到有关 Web.MVC 类未按预期工作的警告。

    论坛帖子解决了我的问题: ASP.Net Core MVC - Client-side validation for custom attribute

    更改为使用 Microsoft.AspNetCore.Mvc.ModelBinding.Validation 的 IClientModelValidator 类;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多