public void RegisterDefaultAdapterFactoryGuardClauses() { // Factory cannot be null Assert.ThrowsArgumentNull( () => DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory(null), "factory"); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); // http://cdroulers.com/blog/2015/03/03/structuremap-3-and-asp-net-web-api-2/ //container = new Container(c => c.AddRegistry<DefaultRegistry>()); container = IoC.Initialize(); GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator), new StructureMapWebApiControllerActivator(container)); // http://www.amescode.com/category/structuremap/ // Allows setter injection in validation attributes. DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new StructuremapDataAnnotationsModelValidator(metadata, context, attribute, container)); // Allows setter injection in IValidatableObject viewModels. DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new StructureMapValidatableObjectAdapterFactory(metadata, context, container)); }
public static void SetupMvcDefaults(bool setupValidation = true, bool setupMetadata = true) { var manager = LocalizationHelper.TextManager; if (setupValidation) { ModelBinders.Binders.DefaultBinder = new LocalizingDefaultModelBinder(manager); DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((meta, ctx, attr) => new LocalizingDataAnnotationsModelValidator(meta, ctx, attr)); DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(RangeAttribute), (meta, ctx, attr) => new LocalizingRangeAttributeAdapater(meta, ctx, attr)); DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(RegularExpressionAttribute), (meta, ctx, attr) => new LocalizingRegularExpressionAttributeAdapater(meta, ctx, attr)); DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(RequiredAttribute), (meta, ctx, attr) => new LocalizingRequiredAttributeAdapater(meta, ctx, attr)); DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(StringLengthAttribute), (meta, ctx, attr) => new LocalizingStringLengthAttributeAdapater(meta, ctx, attr)); } if (setupMetadata) { ModelMetadataProviders.Current = new LocalizingModelMetadataProvider(); } }
public void RegisterDefaultAdapterFactoryGuardClauses() { // Factory cannot be null ExceptionHelper.ExpectArgumentNullException( () => DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory(null), "factory"); }
public void RegisterDefaultAdapterFactory() { var oldFactory = DataAnnotationsModelValidatorProvider.DefaultAttributeFactory; try { // Arrange var metadata = ModelMetadataProviders.Current.GetMetadataForType( () => null, typeof(MyValidatedClass) ); var context = new ControllerContext(); ModelValidator validator = new Mock <ModelValidator>(metadata, context).Object; DataAnnotationsModelValidationFactory factory = delegate { return(validator); }; DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory(factory); // Act var result = new DataAnnotationsModelValidatorProvider() .GetValidators(metadata, context) .Single(); // Assert Assert.Same(validator, result); } finally { DataAnnotationsModelValidatorProvider.DefaultAttributeFactory = oldFactory; } }
/// <summary>Registers both <see cref="DryIocDataAnnotationsModelValidator"/> and /// <see cref="DryIocValidatableObjectAdapter"/> and provides the <paramref name="container"/> to use /// as <see cref="IServiceProvider"/> for resolving dependencies.</summary> /// <param name="container"><see cref="IServiceProvider"/> implementaion.</param> /// <returns>Returns source container for fluent access.</returns> public static IContainer WithDataAnnotationsValidator(this IContainer container) { var serviceProvider = new DryIocServiceProvider(container.ThrowIfNull()); DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new DryIocDataAnnotationsModelValidator(serviceProvider, metadata, context, attribute)); DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new DryIocValidatableObjectAdapter(serviceProvider, metadata, context)); return(container); }
/// <summary> /// Initializes a new instance of the <see cref="NinjectDefaultModelValidatorProvider"/> class. /// </summary> /// <param name="kernel">The kernel.</param> /// <param name="defaultModelValidatorProviders">The default model validator providers.</param> public NinjectDefaultModelValidatorProvider(IKernel kernel, IEnumerable <ModelValidatorProvider> defaultModelValidatorProviders) { this.kernel = kernel; this.defaultModelValidatorProviders = defaultModelValidatorProviders.ToList(); var dataAnnotationsModelValidatorProvider = new DataAnnotationsModelValidatorProvider(); dataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory( ((modelValidatorProviders, attribute) => { this.kernel.Inject(attribute); return((ModelValidator) new DataAnnotationsModelValidator(modelValidatorProviders, attribute)); })); }
protected virtual void RegisterModelValidators(IServiceProvider provider) { // Register Custom Model Validators that enables exposing the IOC Container as IServiceProvider through ValidationContext.GetService() (Validation Attribute etc) DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new DynamoDataAnnotationsModelValidator(provider, metadata, context, attribute)); DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new DynamoValidatableObjectAdapter(provider, metadata, context)); }