- #2836 Part 1: Use existing property values when recursing in `MutableObjectModelBinder` - remove `ComplexModelDTO` because that indirection made fixing this issue more difficult and doesn't add value - started with an old closed PR (#2241) which did some of this work - correct `MutableObjectModelBinderTest` tests that exercised behaviour that can't occur - the old `dto.Results` dictionary was never incomplete; nor could it contain `null` values Part 2: Change `MutableObjectModelBinder` to pass complex property values into binding system - model binding no longer trounces nodes in the model tree that aren't bound - create model instances less often in `TryUpdateModel` scenarios - refactor `EnsureModel()` to `GetModel()` and use appropriately - reorder logic in `SetProperty()` and `AddToProperty()` to avoid copying to / from the same collection - also cleans up some code duplication nits: - clean up `MutableObjectModelBinderTest` - fix odd line wrappings and indentation - use `nameof()` more - use `string.Empty` more - simplify a couple of `Returns()` expressions - make assertions in `TryUpdateModelIntegrationTest` more readable - no need to work through `ModelStateDictionary.Keys` - also use `Length` instead of `Count()`; test code but we don't need Linq at all in that test class |
||
|---|---|---|
| .. | ||
| Metadata | ||
| Validation | ||
| ArrayModelBinderTest.cs | ||
| BinderTypeBasedModelBinderModelBinderTest.cs | ||
| BindingSourceModelBinderTest.cs | ||
| BindingSourceValueProviderTest.cs | ||
| BodyModelBinderTests.cs | ||
| ByteArrayModelBinderTests.cs | ||
| CancellationTokenModelBinderTests.cs | ||
| CollectionModelBinderTest.cs | ||
| CompositeModelBinderTest.cs | ||
| CompositeValueProviderTest.cs | ||
| DictionaryBasedValueProviderTests.cs | ||
| DictionaryModelBinderTest.cs | ||
| ElementalValueProviderTests.cs | ||
| EnumerableValueProviderTest.cs | ||
| FormCollectionModelBinderTest.cs | ||
| FormFileModelBinderTest.cs | ||
| FormValueProviderFactoryTest.cs | ||
| HeaderModelBinderTests.cs | ||
| JQueryFormValueProviderFactoryTest.cs | ||
| JQueryFormValueProviderTest.cs | ||
| KeyValuePairModelBinderTest.cs | ||
| ModelBindingContextTest.cs | ||
| ModelBindingResultTest.cs | ||
| MutableObjectModelBinderTest.cs | ||
| QueryStringValueProviderFactoryTest.cs | ||
| ReadableStringCollectionValueProviderTest.cs | ||
| SimpleHttpValueProvider.cs | ||
| TestValueProvider.cs | ||
| TypeConverterModelBinderTest.cs | ||
| TypeMatchModelBinderTest.cs | ||