public static void AddFluentValidationHtmlConventions(this IServiceCollection serviceCollection, Action <FluentValidationOptions> options = null) { var fluentValidationOptions = new FluentValidationOptions(); options?.Invoke(fluentValidationOptions); serviceCollection.AddSingleton <IValidatorFinder>(x => new FluentValidatorFinder(y => (IValidator)x.GetService(y))); serviceCollection.AddSingleton(new ServiceDescriptor(typeof(FluentValidationOptions), fluentValidationOptions)); }
public static void AddFluentValidationHtmlConventions(this IServiceCollection serviceCollection, Action <FluentValidationOptions> options = null) { var fluentValidationOptions = new FluentValidationOptions(); options?.Invoke(fluentValidationOptions); serviceCollection.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>(); serviceCollection.AddSingleton <IValidatorFinder>(x => new FluentValidatorFinder(y => (IValidator)x.GetRequiredService <IHttpContextAccessor>().HttpContext.RequestServices.GetService(y))); serviceCollection.AddSingleton(new ServiceDescriptor(typeof(FluentValidationOptions), fluentValidationOptions)); }
public FluentValidationHtmlConventions(IValidatorFinder validatorFinder, FluentValidationOptions fluentValidationOptions) { _ruleProviders.Add(AddLengthClasses); _ruleProviders.Add(AddRequiredClass); _ruleProviders.Add(AddCreditCardClass); _ruleProviders.Add(AddEqualToDataAttr); _ruleProviders.Add(AddRegexData); _ruleProviders.Add(AddEmailData); _ruleProviders.AddRange(fluentValidationOptions.RuleProviders); Inputs.Always.Modify((h, r) => { var propertyValidators = validatorFinder.FindValidators(r); foreach (var ruleProvider in _ruleProviders) { ruleProvider.Invoke(propertyValidators, h, r); } }); }