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)