Domanda

Ho un DataAnnotationsModelValidatorProvider personalizzato per eseguire la convalida del modello in modo più dinamico, quindi aggiungere semplicemente attributi.Ho provato ad aggiungere la mia fornitura a global.asax.cs in questo modo:

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

Ma una volta caricato il modulo, viene visualizzato un messaggio di errore che dice "I nomi dei tipi di convalida nelle regole di convalida del client discrete devono essere univoci. Il seguente tipo di convalida è stato visto più di una volta: obbligatorio".

Secondo un commento su questo blog , questo perché Ninject sta sovrascrivendo i provider di validazione personalizzati.

Sono abbastanza nuovo in MVC e non riesco a trovare un modo per dire a Ninject di accettare anche i miei provider personalizzati, come potrei risolvere questo problema?

Per la cronaca: non desidero utilizzare Fluentvalidation.net, desidero attenermi alle convalide MVC predefinite (per la maggior parte).

È stato utile?

Soluzione

Modifica la registrazione del provider in

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

Altri suggerimenti

C'è un altro modo (funziona sicuramente in MVC 4):

Trova la tua classe che eredita l'interfaccia IdependencyResolver e aggiungila al costruttore _kernel.Unbind<ModelValidatorProvider>();: devi solo svincolare il validatore ninject e non ci dovrebbero essere colission con il validatore predefinito.

Nel mio caso il mio costruttore ha questo aspetto:

public NinjectDependencyResolver()
{
       _kernel = new StandardKernel();
       _kernel.Unbind<ModelValidatorProvider>();
       AddBindings();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top