Comment arrêter Ninject de surcharger DataAnnotationsModelValidatorProvider personnalisé?
-
27-10-2019 - |
Question
J'ai un DataAnnotationsModelValidatorProvider personnalisé pour faire la validation des modèles d'une manière plus dynamique alors que l'ajout d'attributs. J'ai essayé d'ajouter mon fournir aux Global.asax.cs comme ceci:
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());
Mais une fois que je charge ma forme, je reçois une erreur « noms de type validation dans les règles de validation discrète client doit être unique Le type de validation suivante a été vu plus d'une fois. Nécessaire ».
Selon un commentaire sur ce blog , c'est parce que Ninject est prépondérant des fournisseurs de validateur personnalisé.
Je suis assez nouveau pour MVC et je ne peux pas sembler trouver un moyen de dire Ninject d'accepter mes fournisseurs personnalisés ainsi, comment pourrais-je aller sur régler ce problème?
Pour mémoire: Je ne veux pas utiliser Fluentvalidation.net, je veux rester avec les validations par défaut MVC (pour la plupart)
.La solution
Modifier l'enregistrement du fournisseur à
Rebind<ModelValidatorProvider>().To<AttributeValidatorProvider>();
Autres conseils
Il y a une autre façon (fonctionne dans MVC 4 pour sûr):
Trouvez votre classe qui interface IdependencyResolver
Hériter et ajouter au constructeur _kernel.Unbind<ModelValidatorProvider>();
-. Vous venez unbind validateur ninject et il ne devrait pas être colission avec validateur par défaut
Dans mon cas, mon apparence constructeur comme ceci:
public NinjectDependencyResolver()
{
_kernel = new StandardKernel();
_kernel.Unbind<ModelValidatorProvider>();
AddBindings();
}