public void InfrastructureModelBinder_BindModelIfByTypeNotBindable_ReturnsBindedModel()
        {
            var items = new Dictionary <string, string> {
                { "Key1", "Value1" }, { "Key2", "Value2" }
            };

            var model = new ModelIf();

            model.Property1 = "ValueThatWillNotBeBinded";
            model.Property2 = "ValueThatWillBeBinded";
            model.Property3 = items.ToSelectListItem(m => m.Key, m => m.Value);
            model.Property4 = items.ToSelectList(m => m.Key, m => m.Value, "Key2");
            model.Property5 = items.ToMultiSelectList(m => m.Key, m => m.Value, new[] { "Key1", "Key2" });
            model.Property6 = items.Keys;

            ModelIf bindedModel = new InfrastructureModelBinder().BindModel(new ControllerContext(), GetModelBinderContextFor(model)) as ModelIf;

            Assert.IsNotNull(bindedModel);
            Assert.IsNull(bindedModel.Property1);
            Assert.IsNull(bindedModel.Property2);
            Assert.IsNull(bindedModel.Property3);
            Assert.IsNull(bindedModel.Property4);
            Assert.IsNull(bindedModel.Property5);
            Assert.IsNull(bindedModel.Property6);
        }
Example #2
0
        public void InfrastructureModelMetadataProvider_CreateMetadata_ReturnsMetadata()
        {
            var model = new Model();

            model.NestedPropertyModels = new[] { new NestedModel {
                                                     Property12 = new[] { new SelectListItem {
                                                                              Text = "Text", Value = "Value"
                                                                          } }
                                                 } };
            model.Property12 = new[] { new SelectListItem {
                                           Text = "Text", Value = "Value"
                                       } };

            ModelBindingContext modelBinder = new ModelBindingContext
            {
                ModelMetadata = new InfrastructureModelMetadataProvider().GetMetadataForType(() => model, model.GetType()),
                ValueProvider = new NameValueCollectionValueProvider(new NameValueCollection(), CultureInfo.InvariantCulture)
            };

            var bindedModel = new InfrastructureModelBinder().BindModel(new ControllerContext(), modelBinder);

            var metadata = new InfrastructureModelMetadataProvider().GetMetadataForType(() => bindedModel, bindedModel.GetType());

            Assert.IsNotNull(metadata);

            var metadatas = new InfrastructureModelMetadataProvider().GetMetadataForProperties(bindedModel, bindedModel.GetType());

            foreach (var meta in metadatas)
            {
                Assert.IsNotNull(metadata);
            }

            foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(bindedModel))
            {
                metadata = new InfrastructureModelMetadataProvider().GetMetadataForProperty(() => bindedModel, bindedModel.GetType(), property.Name);

                Assert.IsNotNull(metadata);
            }
        }