Wie kann Ninject daran gehindert werden, benutzerdefinierte DataAnnotationsModelValidatorProvider zu überschreiben?
-
27-10-2019 - |
Frage
Ich habe einen benutzerdefinierten DataAnnotationsModelValidatorProvider, um die Modellvalidierung dynamischer durchzuführen als nur Attribute hinzuzufügen.Ich habe versucht, mein Angebot wie folgt zur global.asax.cs hinzuzufügen:
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new AttributeValidatorProvider());
Beim Laden meines Formulars wird jedoch die Fehlermeldung "Validierungstypnamen in unauffälligen Client-Validierungsregeln müssen eindeutig sein. Der folgende Validierungstyp wurde mehrmals angezeigt: Erforderlich".
Laut ein Kommentar in diesem Blog , weil Ninject benutzerdefinierte Validator-Anbieter überschreibt.
Ich bin ziemlich neu in MVC und kann anscheinend keine Möglichkeit finden, Ninject anzuweisen, auch meine benutzerdefinierten Anbieter zu akzeptieren. Wie würde ich dieses Problem beheben?
Für die Aufzeichnung: Ich möchte Fluentvalidation.net nicht verwenden, ich möchte mich (größtenteils) an die Standard-MVC-Validierungen halten.
Lösung
Ändern Sie die Registrierung des Anbieters in
Rebind<ModelValidatorProvider>().To<AttributeValidatorProvider>();
Andere Tipps
Es gibt einen anderen Weg (funktioniert sicher in MVC 4):
Suchen Sie Ihre Klasse, die die IdependencyResolver
-Schnittstelle erbt, und fügen Sie sie dem Konstruktor _kernel.Unbind<ModelValidatorProvider>();
hinzu
In meinem Fall sieht mein Konstruktor folgendermaßen aus:
public NinjectDependencyResolver()
{
_kernel = new StandardKernel();
_kernel.Unbind<ModelValidatorProvider>();
AddBindings();
}