Exemple #1
0
        public void CreateInstance_CreatesFilter()
        {
            // Arrange
            var property            = typeof(StringController).GetProperty(nameof(StringController.StringProp));
            var lifecycleProperties = new[] { new LifecycleProperty(property, "key") };
            var factory             = new ControllerSaveTempDataPropertyFilterFactory(lifecycleProperties);

            // Act
            var filter = factory.CreateInstance(CreateServiceProvider());

            // Assert
            var tempDataFilter = Assert.IsType <ControllerSaveTempDataPropertyFilter>(filter);

            Assert.Same(lifecycleProperties, tempDataFilter.Properties);
        }
        public void CreateInstance_CreatesFilter()
        {
            // Arrange
            var factory      = new ControllerSaveTempDataPropertyFilterFactory();
            var propertyInfo = typeof(StringController).GetProperty("StringProp");

            factory.TempDataProperties = new List <TempDataProperty>()
            {
                new TempDataProperty("TempDataProperty-StringProp", propertyInfo, null, null)
            };

            // Act
            var filter = factory.CreateInstance(CreateServiceProvider());

            // Assert
            Assert.Collection(
                Assert.IsType <ControllerSaveTempDataPropertyFilter>(filter).Properties,
                property => Assert.Equal(propertyInfo, property.PropertyInfo));
        }
        /// <inheritdoc />
        public void OnProvidersExecuting(ApplicationModelProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            foreach (var controllerModel in context.Result.Controllers)
            {
                var modelType          = controllerModel.ControllerType.AsType();
                var tempDataProperties = SaveTempDataPropertyFilterBase.GetTempDataProperties(modelType);

                if (tempDataProperties != null)
                {
                    var factory = new ControllerSaveTempDataPropertyFilterFactory()
                    {
                        TempDataProperties = tempDataProperties
                    };

                    controllerModel.Filters.Add(factory);
                }
            }
        }