public override async Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken) { if (actionContext.ActionArguments.Count > 0) { var dicionario = new ModelStateDictionary(); var globalConfig = GlobalConfiguration.Configuration.DependencyResolver.GetService( typeof(IGlobalContainerAccessor)) as IGlobalContainerAccessor; IValidatorFactory validationFactory = new FluentValidatorFactory(globalConfig.Container); foreach (var arg in actionContext.ActionArguments) { if (arg.Value == null) { continue; } var validator = validationFactory.GetValidator(arg.Value.GetType()); if (validator == null) { continue; } var result = await validator.ValidateAsync(arg.Value, cancellationToken).ConfigureAwait(false); if (result.IsValid) { continue; } foreach (var e in result.Errors) { dicionario.AddModelError(e.ErrorCode, e.ErrorMessage); } } if (dicionario.Count > 0) { actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, dicionario); } } }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth(); AutoMapperInit.BuildMap(); ControllerBuilder.Current.SetControllerFactory(new IOCControllerFactory()); // Configure FluentValidation to use StructureMap var factory = new FluentValidatorFactory(); // Tell MVC to use FluentValidation for validation ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(factory)); DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; }
public void SetUp() { var fluentValidatorFactory = new FluentValidatorFactory <TestEntity>(); validator = new TestValidator(fluentValidatorFactory); }