Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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);
        }