In ASP.net core 1.0, I was able to do this by replacing the IValidationAttributeAdapterProvider service.
public class CustomValidationAttributeAdapterProvider : IValidationAttributeAdapterProvider { public IValidationAttributeAdapterProvider internalImpl; public CustomValidationAttributeAdapterProvider() { internalImpl = new ValidationAttributeAdapterProvider(); } public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer) { IAttributeAdapter adapter = internalImpl.GetAttributeAdapter(attribute, stringLocalizer); if (adapter == null) { var type = attribute.GetType(); if (type == typeof(CustomValidatorAttribute)) { adapter = new CustomNumberValidatorAdapter((CustomValidatorAttribute)attribute, stringLocalizer); } } return adapter; } }
In Startup ConfigureServices
if (services.Any(f => f.ServiceType == typeof(IValidationAttributeAdapterProvider))) { services.Remove(services.Single(f => f.ServiceType == typeof(IValidationAttributeAdapterProvider))); } services.AddScoped<IValidationAttributeAdapterProvider, CustomValidationAttributeAdapterProvider>();
source share