title: .NET core custom and default binding combined
body: <p>I'm creating a custom model binder for a view model, implementing <code>IModelBinder</code></p>
  
  <p>I have a lot of properties in my view model, the majority of which do not need any custom binding. Rather than explicitly set all of the property values on my model individually from the <code>ModelBindingContext</code>, I would to be able to get the framework to bind the model for me, then I would carry out any custom binding:</p>
  
  <pre><code>public class ApplicationViewModelBinder : IModelBinder
  {
      public Task BindModelAsync(ModelBindingContext bindingContext)
      {
          if (bindingContext == null)
          {
              throw new ArgumentNullException(nameof(bindingContext));
          }
  
          // get .net core to bind values on model
  
          // Cary out any customization of the models properties
  
          bindingContext.Result = ModelBindingResult.Success(bindingContext.Model);
          return Task.CompletedTask; 
      }
  }
  </code></pre>
  
  <p>Basically I want to carry out the default model binding, then apply custom binding, similar to the approach taken in this <a href="https://stackoverflow.com/questions/970335/asp-net-mvc-mixing-custom-and-default-model-binding">SO post</a> but for .NET Core, not framework.</p>
  
  <p>I assumed applying the default binding would be straight forward, but haven't been able to find out how to do so. I believe the solution would involve <code>ComplexTypeModelBinder</code> and <code>ComplexTypeModelBinderProvider</code> classes, but can't seem to find out how to go about it.</p>
  
  <p>I know I could just make any changes when the POST request hits my controller method, but this seem the wrong place and wrong time to do so.</p>