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