Pregunta

Tengo un DataAnnotationsModelValidatorProvider personalizado para realizar la validación del modelo de una manera más dinámica y luego simplemente agregar atributos.Traté de agregar mi proveedor a global.asax.cs así:

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

Pero una vez que cargo mi formulario, aparece un error que dice "Los nombres de tipo de validación en reglas de validación de cliente discretas deben ser únicos. El siguiente tipo de validación se vio más de una vez: obligatorio".

Según un comentario en este blog , esto se debe a que Ninject está anulando los proveedores de validadores personalizados.

Soy bastante nuevo en MVC y parece que no puedo encontrar una manera de decirle a Ninject que también acepte mis proveedores personalizados, ¿cómo podría solucionar este problema?

Para el registro: no deseo usar Fluentvalidation.net, quiero seguir con las validaciones MVC predeterminadas (en su mayor parte).

¿Fue útil?

Solución

Cambie el registro del proveedor a

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

Otros consejos

Hay otra forma (funciona en MVC 4 seguro):

Encuentra tu clase que hereda la interfaz IdependencyResolver y agrégala al constructor _kernel.Unbind<ModelValidatorProvider>();; simplemente desvincula el validador ninject y no debería haber colisión con el validador predeterminado.

En mi caso, mi constructor se ve así:

public NinjectDependencyResolver()
{
       _kernel = new StandardKernel();
       _kernel.Unbind<ModelValidatorProvider>();
       AddBindings();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top