Невозможно установить имена участников из настраиваемого атрибута проверки в MVC2

Я создал настраиваемый атрибут проверки, создав подкласс ValidationAttribute. Атрибут применяется к моей модели представления на уровне класса, так как ему необходимо проверить более одного свойства.

Я переопределяю

protected override ValidationResult IsValid(object value, ValidationContext validationContext)

и возвращаю:

new ValidationResult("Always Fail", new List<string> { "DateOfBirth" }); 

во всех случаях, когда DateOfBirth является одним из свойств в моей модели представления. .

Когда я запускаю свое приложение, я вижу, что это происходит. Для ModelState.IsValid правильно установлено значение false, но когда я проверяю содержимое ModelState, я вижу, что свойство DateOfBirth НЕ содержит никаких ошибок. Вместо этого у меня есть пустая строка Key со значением null и исключение, содержащее строку, указанную в моем атрибуте проверки.

Это приводит к тому, что при использовании ValidationMessageFor в моем интерфейсе не отображается сообщение об ошибке. Если я использую ValidationSummary, я вижу ошибку. Это потому, что он не связан со свойством.

Похоже, он игнорирует тот факт, что я указал имя члена в результате проверки.

Почему это так и как это исправить?

ПРИМЕР КОДА ПО ЗАПРОСУ:

 [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
    public class ExampleValidationAttribute : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            // note that I will be doing complex validation of multiple properties when complete so this is why it is a class level attribute
            return new ValidationResult("Always Fail", new List<string> { "DateOfBirth" });
        }
    }

    [ExampleValidation]
    public class ExampleViewModel
    {
        public string DateOfBirth { get; set; }
    }
9
задан Paul Hiles 24 November 2010 в 12:41
поделиться