Saltar al contenido

Manera correcta de deshabilitar la validación del modelo en ASP.Net Core 2 MVC

Solución:

 services.Configure<ApiBehaviorOptions>(options =>
        {
            options.SuppressModelStateInvalidFilter = true;
        });

debería deshabilitar la validación automática del estado del modelo.

Utilice este método de extensión:

public static IServiceCollection DisableDefaultModelValidation(this IServiceCollection services)
{
  ServiceDescriptor serviceDescriptor = services.FirstOrDefault<ServiceDescriptor>((Func<ServiceDescriptor, bool>) (s => s.ServiceType == typeof (IObjectModelValidator)));
  if (serviceDescriptor != null)
  {
    services.Remove(serviceDescriptor);
    services.Add(new ServiceDescriptor(typeof (IObjectModelValidator), (Func<IServiceProvider, object>) (_ => (object) new EmptyModelValidator()), ServiceLifetime.Singleton));
  }
  return services;
}


public class EmptyModelValidator : IObjectModelValidator
{
  public void Validate(ActionContext actionContext, ValidationStateDictionary validationState, string prefix, object model)
  {
  }
}

Uso:

public void ConfigureServices(IServiceCollection services)
{
    services.DisableDefaultModelValidation();
}

A partir de aspnet core 3.1, así es como deshabilita la validación del modelo como se ve en los documentos:

Primero crea esta clase NullValidator:

public class NullObjectModelValidator : IObjectModelValidator
{
    public void Validate(ActionContext actionContext,
        ValidationStateDictionary validationState, string prefix, object model)
    {

    }
}

Luego utilícelo en lugar del validador del modelo real:

services.AddSingleton<IObjectModelValidator, NullObjectModelValidator>();

Tenga en cuenta que esto solo deshabilita la validación del modelo, aún obtendrá errores de enlace del modelo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *