Validation factory that uses ninject to create validators
Inheritance: ValidatorFactoryBase
示例#1
0
        protected override void OnApplicationStarted()
        {
            base.OnApplicationStarted();

            AreaRegistration.RegisterAllAreas();
            RegisterRoutes(RouteTable.Routes);

            ViewEngines.Engines.RemoveAt(0); //Remove WebForms ViewEngine

            //Remove ClientDataTypeModelValidatorProvider to remove client messages which do not respect CultureInfo
            foreach (ModelValidatorProvider prov in ModelValidatorProviders.Providers)
            {
                if (prov.GetType().Equals(typeof(ClientDataTypeModelValidatorProvider)))
                {
                    ModelValidatorProviders.Providers.Remove(prov);
                    break;
                }
            }

            var validatorFactory = new NinjectValidatorFactory(Kernel);
            FluentValidationModelValidatorProvider.Configure(x =>
                {
                    x.ValidatorFactory = validatorFactory;
                    x.AddImplicitRequiredValidator = false;
                });
        }
示例#2
0
        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            // Remote Validator taken from
            // http://nripendra-newa.blogspot.co.uk/2011/05/fluent-validation-remote-validation.html
            // NinjectValidator is a Ninject Exetension listed on the Ninject Website used for FluentValidation with MVC 4

            FluentValidationModelValidationFactory validationFactory = (metadata, context, rule, validator) => new RemoteFluentValidationPropertyValidator(metadata, context, rule, validator);
            var ninjectValidatorFactory = new NinjectValidatorFactory(kernel);
            var validationProvider = new FluentValidationModelValidatorProvider(ninjectValidatorFactory);
            validationProvider.Add(typeof(RemoteValidator), validationFactory);
            ModelValidatorProviders.Providers.Add(validationProvider);
            DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

            kernel.Load<FluentValidatorModule>();

            // Ninject with EF DbContext
            // http://stackoverflow.com/questions/11921883/how-to-handle-dbcontext-when-using-ninject
            // Must ensure the same db context is injected into each service per web request

            kernel.Bind<IProductService>().To<ProductService>().InRequestScope();
            kernel.Bind<IUserService>().To<UserService>().InRequestScope();
            kernel.Bind<ICategoryService>().To<CategoryService>().InRequestScope();
            kernel.Bind<ICartService>().To<CartService>().InRequestScope();
            kernel.Bind<IOrderService>().To<OrderService>().InRequestScope();
            kernel.Bind<StoreContext>().ToSelf().InRequestScope();
        }
示例#3
0
        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            // Create validator factory
            var ninjectValidatorFactory = new NinjectValidatorFactory(kernel);

            // Wire up validator factory to MVC
            ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(ninjectValidatorFactory));
            DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

            // Scan for validator modules and add to nuget
            foreach (var validator in AssemblyScanner.FindValidatorsInAssemblyContaining<StevesDocket.Validators.RegisterValidator>())
            {
                kernel.Bind(validator.InterfaceType).To(validator.ValidatorType);
            }
        }
        private static void RegisterValidationAttributes(IKernel kernel)
        {
            NinjectValidatorFactory ninjectValidatorFactory = new NinjectValidatorFactory(kernel);

            var fluentValidationModelValidatorProvider = new FluentValidationModelValidatorProvider(ninjectValidatorFactory);
            fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;

            FluentValidationModelValidatorProvider
              .Configure(x => x.ValidatorFactory = ninjectValidatorFactory);

            DataAnnotationsModelValidatorProvider
              .AddImplicitRequiredAttributeForValueTypes = false;

            AssemblyScanner.FindValidatorsInAssembly(Assembly.GetExecutingAssembly())
                .ForEach(match => kernel.Bind(match.InterfaceType).To(match.ValidatorType));
        }
示例#5
0
        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            // You can swap out modules for different implementations
            // because it is designed with an abstraction layer

            var modules = new NinjectModule[]
                {
                    new FluentValidatorModule(),
                    new EntityFrameworkModule(),
                    // new NHibernateModule(), needs more work done
                };

            kernel.Load(modules); // These modules define the interfaces to be injected
            // Ninject will handle the object lifetime
            // This means it will create new or inject current instances from its container into
            // anything that consumes a defined interface and annotated with [Inject]

            // https://github.com/ninject/ninject.web.mvc.fluentvalidation

            // FluentValidation plugin goes well
            NinjectValidatorFactory ninjectValidatorFactory = new NinjectValidatorFactory(kernel);
            ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(ninjectValidatorFactory));
            DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
        }