public void CanBindModelWithCollection() { int id = 2; string employeeName = "Michael"; //string employee2Id = "3"; //string employee2Name = "Alec"; // Arrange var formCollection = new NameValueCollection { {"Employee.Id", id.ToString()}, {"Employee.Name", employeeName}, {"Employee.Reports", "3"}, {"Employee.Reports", "4"}, {"Employee.Manager", "12"} }; var valueProvider = new NameValueCollectionValueProvider(formCollection, null); var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(Employee)); var bindingContext = new ModelBindingContext { ModelName = "Employee", ValueProvider = valueProvider, ModelMetadata = modelMetadata }; DefaultModelBinder target = new SharpModelBinder(); ControllerContext controllerContext = new ControllerContext(); // Act Employee result = (Employee)target.BindModel(controllerContext, bindingContext); // Assert Assert.AreEqual(id, result.Id); Assert.AreEqual(employeeName, result.Name); Assert.AreEqual(2,result.Reports.Count); }
public void CanBindModelWithNestedEntities() { int id = 2; string employeeName = "Michael"; string managerName = "Tobias"; string managerManagerName = "Scott"; // Arrange var formCollection = new NameValueCollection { {"Employee.Id", id.ToString()}, {"Employee.Name", employeeName}, {"Employee.Manager.Name", managerName}, {"Employee.Manager.Manager.Name", managerManagerName} }; var valueProvider = new NameValueCollectionValueProvider(formCollection, null); var modelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(Employee)); var bindingContext = new ModelBindingContext { ModelName = "Employee", ValueProvider = valueProvider, ModelMetadata = modelMetadata }; DefaultModelBinder target = new SharpModelBinder(); ControllerContext controllerContext = new ControllerContext(); // Act Employee result = (Employee)target.BindModel(controllerContext, bindingContext); // Assert Assert.AreEqual(id, result.Id); Assert.AreEqual(employeeName, result.Name); Assert.AreEqual(managerName, result.Manager.Name); Assert.AreEqual(managerManagerName, result.Manager.Manager.Name); }