Wie kann Ninject daran gehindert werden, benutzerdefinierte DataAnnotationsModelValidatorProvider zu überschreiben?

StackOverflow https://stackoverflow.com/questions/8356811

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.

War es hilfreich?

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();
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top