#c# #asp.net-mvc-2 #attributes #data-annotations #fluentvalidation
#c# #asp.net-mvc-2 #атрибуты #данные-аннотации #плавная проверка
Вопрос:
Я использую систему пространств имен.ComponentModel.Примечания к данным в C # 4 для реализации моего собственного атрибута проверки, и это выглядит следующим образом
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public sealed class MyCustomValidator : ValidationAttribute {
private String Property1 { get; set; }
private String Property2 { get; set; }
public ValeTaxiSituacaoRequired(String property1, String property2) {
Property1 = property1;
Property2 = property2;
}
public override bool IsValid(object value) {
//validation logic
}
}
Я хочу использовать этот атрибут, как показано ниже
[MyCustomValidator("Name", "Job")]
[MyCustomValidator("Name", "Email")]
[MyCustomValidator("Name", "Job")]
public class Employe {
}
Проблема в том, что выполняется только одна проверка. Как я могу выполнить все проверки (используя asp.net mvc 2)?
Ответ №1:
необходимо переопределить свойство TypeId http://www.paraesthesia.com/archive/2010/03/02/the-importance-of-typeid-in-asp.net-mvc-dataannotations-validation-attributes.aspx
Ответ №2:
Если вы хотите реализовать AllowMultiple= true в своем собственном атрибуте, то сначала переопределите TypeID, а затем для решения проблемы jQuery посмотрите статью о code project здесь
Ответ №3:
Взгляните на FluentValidation. Это позволяет вам отделить вашу проверку от проверяемых классов, чтобы вы могли вызвать свою логику проверки в любое время, на сервере или клиенте.
Это позволяет добавлять в класс любое количество правил любой сложности, не загромождая его атрибутами.