none
Проблема валидации. Ошибка Validation type names in unobtrusive client validation rules must be unique. RRS feed

  • Вопрос

  • Добрый день. Проект ASP.NET MVC. Мной подключен Ninject для бизнес логики и репозитория. Все замечательно работало. Несколько дней занимался юнит-тестами и когда решил запустить приложение при открытии любой страницы на которой есть форма с валидацией на основе аннотаций к данным и ненавязчивым javascript (в общем по умолчанию) вылетает исключение: Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required

    например в такой строке:

    @Html.HiddenFor(m=>m.Id)

    и другим подобным.

    Я так понимаю что где то еще включены правила валидации, которые конфликтует со значением по умолчанию. Но как это отменить или отключить не знаю в интернете найти решения не могу. Мне надо что бы валидация была на аннотациях.

    Прошу помощи или совета, может кто сталкивался с чем-то похожим. Спасибо.

    19 февраля 2015 г. 14:50

Ответы

  • А без Ninject пробовали, работает? Предлагаю использовать DI контейнер получше – Unity. Что касается ошибки то есть много причин для её появления.Попробуйте прописать это в код старта приложения.

    ModelValidatorProviders.Providers.Clear();
    ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());

    Какая версия MVC у вас?


    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа i-am-a-kernel 19 февраля 2015 г. 19:32
    19 февраля 2015 г. 17:57
    Модератор
  • Без Ninject работает. Спасибо. Я решил проблему по другому, удалил следующие пакеты:

    Ninject.MVC5

    Ninject.Web.Common

    Само ядро Ninject я оставил установленным, и проблема решилась сама.

    Спасибо.

    • Помечено в качестве ответа i-am-a-kernel 19 февраля 2015 г. 19:32
    19 февраля 2015 г. 19:32

Все ответы

  • А без Ninject пробовали, работает? Предлагаю использовать DI контейнер получше – Unity. Что касается ошибки то есть много причин для её появления.Попробуйте прописать это в код старта приложения.

    ModelValidatorProviders.Providers.Clear();
    ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());

    Какая версия MVC у вас?


    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа i-am-a-kernel 19 февраля 2015 г. 19:32
    19 февраля 2015 г. 17:57
    Модератор
  • Без Ninject работает. Спасибо. Я решил проблему по другому, удалил следующие пакеты:

    Ninject.MVC5

    Ninject.Web.Common

    Само ядро Ninject я оставил установленным, и проблема решилась сама.

    Спасибо.

    • Помечено в качестве ответа i-am-a-kernel 19 февраля 2015 г. 19:32
    19 февраля 2015 г. 19:32
  • не надо удалить пакеты .

    There is another way (works in MVC 4 for sure):

    Find your class which inherit IdependencyResolver interface and add to constructor _kernel.Unbind<ModelValidatorProvider>(); - you just unbind ninject validator and there should be no colission with default validator.

    In my case my constructor looks like this:

    public NinjectDependencyResolver() { _kernel = new StandardKernel(); _kernel.Unbind<ModelValidatorProvider>(); AddBindings(); }

    https://stackoverflow.com/questions/8356811/how-to-stop-ninject-from-overriding-custom-dataannotationsmodelvalidatorprovider

    15 ноября 2017 г. 9:48