Свободная проверка запускается для классов, для которых проверка не определена - PullRequest
0 голосов
/ 18 октября 2011

Я использую mvc3 + беглая валидация + ninject

У меня есть простой контроллер и модель, для которой не настроена валидация (пейджер) ... но для этого объекта также запускается свободная валидация, поэтому код разбивается и генерируется исключение:

> Ошибка активации IValidator {Pager}

Я посмотрел в источнике и нашел этот метод, который предполагает проверку необходимости проверки какого-либо свойства или нет, но он только проверяет, не являются ли значения NULL:

bool IsValidatingProperty(ModelMetadata metadata) {
            return metadata.ContainerType != null && !string.IsNullOrEmpty(metadata.PropertyName);
    }

Я полагаю, что есть некоторая хитрость настройки этой проблемы, короче: я хочу, чтобы FV запускался только на объектах, для которых у меня определены правила FV ...

Спасибо;)

1 Ответ

1 голос
/ 19 октября 2011

После предложения от Джереми

http://fluentvalidation.codeplex.com/workitem/7091

Я обнаружил, что решение проблемы не так сложно:

    public class TestValidatorFactory : ValidatorFactoryBase
    {
        private readonly IKernel Container;

        public TestValidatorFactory(IKernel container)
        {
            Container = container;
        }

        public override IValidator CreateInstance(Type validatorType)
        {
            var bindings = (List<IBinding>)Container.GetBindings(validatorType);
            if (bindings.Count > 0) return (IValidator)Container.Get(validatorType);
            else return null;
        }
    }
...