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; }); }
/// <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(); }
/// <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)); }
/// <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; }