我正在努力解决自定义验证属性的问题,以及为什么它与非自定义验证属性的作用不同。
我已经设置了一个非常基本的自定义验证属性作为示例:
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”类分配给相关的输入字段。>
任何帮助/协助将不胜感激。
请告知我是否可以提供更多信息。
答案 0 :(得分:0)
好的,现在回答这个。
我对C#还是很陌生,并且没有意识到将asp.NET核心作为目标框架与尝试使用.Net类之间的区别。
我还收到有关Web.MVC类的警告,但未按预期运行。
论坛帖子解决了我的问题: ASP.Net Core MVC - Client-side validation for custom attribute
已更改为使用Microsoft.AspNetCore.Mvc.ModelBinding.Validation;使用IClientModelValidator类;