title: Model Binding ignoring properties that have the JsonIgnore attribute
body: <p>I'm building a web api microservice using Core 3.  I have a class defined as follows:</p>
  
  <pre><code>public class UserSourceList
  {
      [JsonIgnore]
      public string UserId { get; set; }
  
      [JsonIgnore]
      public string ListId { get; set; }
  
      public string Name { get; set; }
  
      [JsonConverter(typeof(StringEnumConverter))]
      public ListTypes ListType { get; set; }
  
      public List&lt;string&gt; Ids { get; set; }
  
      public DateTimeOffset CreationTime { get; set; }
  }
  </code></pre>
  
  <p>When the framework attempts to bind the data provided by a HTTP <code>PUT</code>, it will not populate the <code>UserId</code> and <code>ListId</code> fields.  As a result, model binding is failing during validation and returning a HTTP <code>400</code>, stating that <code>UserId</code> and <code>ListId</code> are required.</p>
  
  <p>The controller's action method is defined as follows:</p>
  
  <pre><code> [HttpPut("{userId:userid}/{listId:listid}", Name = "ReplaceUserList")]
   public ActionResult Replace(string userId, string listId, UserSourceList model)
   {
      return Ok(_listManager.ReplaceUserList(model.UserId, model.ListId, model));
   }
  </code></pre>
  
  <p>A typical call to the API would look similar to this:</p>
  
  <pre><code>PUT /api/v1/listmgmt/abc123def456/c788f2f7b7984424910726d4a290be26
  </code></pre>
  
  <p><code>PUT</code> Body</p>
  
  <pre><code>{
    "name": "Test",
    "listType": "Eans",
    "ids": ["97814571867716", "9781430257615", "9780982550670"],
    "userId":"abc123def456",
    "listId":"c788f2f7b7984424910726d4a290be26"
  }
  </code></pre>
  
  <p>If I removed the <code>JsonIgnore</code> Attribute from the <code>UserId</code> and <code>ListId</code> properties of the model, everything binds as expected.</p>
  
  <p>Is it expected behavior that model binding will ignore fields flagged with <code>JsonIgnore</code>?</p>
  
  <p>I know I can work around it by changing how my validation code works or I can split my model. I would like to understand the current behavior as it is different from what I expected and experienced with ASP.NET MVC 4 and WebApi 2.</p>
  
  <p>Thanks</p>