Надежная защита от нескольких валидаторов на тех же полях
В настоящее время я использую защиту от дурака для этой проверки:
[RequiredIfNot("type", 3, ErrorMessage = "Please enter at least one value")]
public int[] audites { get; set; }
но клиент хочет добавить проверку как это:
[RequiredIfNot("type", 3, ErrorMessage = "Please enter at least one value")]
[RequiredIfNot("nature", 1, ErrorMessage = "Please enter at least one value")]
[RequiredIfNot("nature", 3, ErrorMessage = "Please enter at least one value")]
public int[] audites { get; set; }
Но с этим компилятор не согласен, так как же объединить In?
Заранее спасибо!
1 ответ
Foolproof.RequiredIfNotAttribute
происходит от Foolproof.ModelAwareValidationAttribute
(который в свою очередь вытекает из System.ComponentModel.DataAnnotation.ValidationAttribute
). ModelAwareValidationAttribute
отмечен [AttributeUsage(AttributeTargets.Property)]
, Ссылайтесь на исходный код. По умолчанию AllowMultiple
параметр AttributeUsage
является false
Это означает, что вы можете применить атрибут только один раз к свойству. Вы пытались применить его 3 раза, поэтому ошибка.
Имея это true
и допустив многократное его применение, возможно, возникнут проблемы с настройкой $.validator.methods
а также $.validator.unobtrusive.adapters
функции, используемые ненавязчивой проверкой.
Вам нужно будет использовать некоторые другие атрибуты проверки или создать свой собственный ValidationAtribute
который реализует IClientValidatable
или полагаться на проверку на стороне сервера.