自定义验证属性不会触发jQuery验证

时间:2019-07-15 17:46:40

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

我正在努力解决自定义验证属性的问题,以及为什么它与非自定义验证属性的作用不同。

我已经设置了一个非常基本的自定义验证属性作为示例:

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

当我调用Controllers POST函数时,验证会正常进行。但是我希望它被触发,类似于其他validationAttributes。例如,我还在我的模型属性之一上设置了范围验证属性,并且当我在该字段中输入无效信息时,就会将“ input-validation-error”类分配给相关的输入字段。

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

请告知我是否可以提供更多信息。

1 个答案:

答案 0 :(得分:0)

好的,现在回答这个。

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

我还收到有关Web.MVC类的警告,但未按预期运行。

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

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

相关问题