Проверка нескольких полей с помощью Fool Proof
Здравствуйте, я использую MVC Fool Proof Validation. чтобы проверить мою модель, и мне нужно использовать RequiredIfNotEmpty
с двумя полями, но я получаю проблемы с ним
модель
public class Conexionado{
[DisplayName("Conexión")]
[RequiredIfNotEmpty("Conex_BT2_Pos", ErrorMessage = "Error!")]
[RequiredIfNotEmpty("Conex_BT2_N", ErrorMessage = "Conex_BT2 Cant be empty if Conex_BT2_N isnt!")]
public string Conex_BT2 { get; set; }
public string Conex_BT2_N { get; set; }
[DisplayName("Ángulo BT")]
[Range(0, 11, ErrorMessage = "Incorrect number")]
public int? Conex_BT2_Pos { get; set; }
}
Я пробовал что-то вроде
[RequiredIfNotEmpty("Conex_BT2_Pos , Conex_BT2_N", ErrorMessage = "Error!")]
[RequiredIfNotEmpty("Conex_BT2_Pos || Conex_BT2_N", ErrorMessage = "Error!")]
Но в этом случае я могу скомпилировать, но когда я пытаюсь использовать Conex_BT2
я получил
'System.NullReferenceException' en FoolproofValidation.dll
Кто-то знает, как я должен справиться с этим?
Спасибо!
1 ответ
На этот вопрос ответили здесь:
Надежные множественные валидаторы на одних и тех же полях Stephen Muecke
Foolproof.RequiredIfNotAttribute
происходит от Foolproof.ModelAwareValidationAttribute
(который в свою очередь вытекает из System.ComponentModel.DataAnnotation.ValidationAttribute
). ModelAwareValidationAttribute
отмечен [AttributeUsage(AttributeTargets.Property)]
, Ссылайтесь на исходный код. По умолчанию AllowMultiple
параметр AttributeUsage
является false
Это означает, что вы можете применить атрибут только один раз к свойству. Вы пытались применить его 3 раза, поэтому ошибка.
Имея это true
и допустив многократное его применение, возможно, возникнут проблемы с настройкой $.validator.methods
а также $.validator.unobtrusive.adapters
функции, используемые ненавязчивой проверкой.
Вам нужно будет использовать некоторые другие атрибуты проверки или создать свой собственный ValidationAtribute
который реализует IClientValidatable
или полагаться на проверку на стороне сервера.
Вы можете реализовать пользовательские проверки в свойствах модели. См. Это руководство: Создание настраиваемого атрибута проверки в MVC для создания настраиваемого атрибута проверки для выполнения необходимой работы, где вы должны написать свой собственный сценарий проверки jquery для проверки на стороне клиента в режиме инфраструктуры MVC, если используется IClientValidatable, что также объясняется в нем.,
Удачи, привет!