Надежная защита от нескольких валидаторов на тех же полях

В настоящее время я использую защиту от дурака для этой проверки:

[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или полагаться на проверку на стороне сервера.

Другие вопросы по тегам