* Add support for binding record types
* PR feedback
* PR changes
* Changes per PR comments
* Changes per PR comments
* Update src/Mvc/Mvc.Core/src/Resources.resx
* Apply suggestions from code review
* Add some more tests
* Undo blazor.server.js changes
* Fixup test
* Use the declared type to infer NullableContextOptions
Prior to this change MVC used the runtime type rather than the declared type to
determine the nullability of a property based on state. In the case of inheritance,
this can be erroneous since the declared type may have a different nullability context
than the model type.
This change addresses this by adding content to `ModelIdentity` that allows inspecting the
declared type.
* Add an overload to `ModelMetadataIdentity` that allows flowing `PropertyInfo`
* Use the declared type in `DataAnnotationsMetadataProvider` to determine nullability based on context.
Fixes https://github.com/aspnet/AspNetCore/issues/14812
* Introduce ValueProviderException analogous to InputFormatterException
* Record ValueProviderException as a model state error
* Fixup bug in reading ProblemDetails \ ValidationProblemDetails using the converter
Fixes https://github.com/aspnet/AspNetCore/issues/10291
- add regression test for #4939
- add `[BindProperty]` doc comments
- add `<remarks>` to `BinderType` properties that recommend setting `BindingSource` in some cases
smaller issues:
- catch invalid `BinderType` values up front
- complete `BindingSource.ModelBinding` implementation: `IValueProvider` filtering was faulty
nits:
- accept VS suggestions e.g. remove unused variables
- "model binder" -> `<see cref="IModelBinder" /> implementation` in some doc comments