Pergunta

Eu tenho um DataAnnotationsModelValidatorProvider personalizado para fazer a validação do modelo de uma forma mais dinâmica do que apenas adicionar atributos.Tentei adicionar meu fornecer ao global.asax.cs assim:

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

Mas assim que carrego meu formulário, recebo um erro dizendo "Nomes de tipo de validação em regras de validação de cliente discretas devem ser exclusivos. O seguinte tipo de validação foi visto mais de uma vez: obrigatório".

De acordo com um comentário neste blog , isso ocorre porque o Ninject está substituindo os provedores de validação personalizados.

Sou bastante novo em MVC e não consigo encontrar uma maneira de dizer ao Ninject para aceitar meus provedores personalizados também. Como eu faria para corrigir esse problema?

Para que conste: não desejo usar Fluentvalidation.net, quero ficar com as validações MVC padrão (na maior parte).

Foi útil?

Solução

Altere o registro do provedor para

Rebind<ModelValidatorProvider>().To<AttributeValidatorProvider>();

Outras dicas

Existe outra maneira (funciona em MVC 4 com certeza):

Encontre sua classe que herda a interface IdependencyResolver e adicione ao construtor _kernel.Unbind<ModelValidatorProvider>(); - você acabou de desassociar o validador ninject e não deve haver colisão com o validador padrão.

No meu caso, meu construtor se parece com isto:

public NinjectDependencyResolver()
{
       _kernel = new StandardKernel();
       _kernel.Unbind<ModelValidatorProvider>();
       AddBindings();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top