【发布时间】: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