title: WebAPI POST [FromBody] not binding
body: <p>I'm posting JSON to a WebAPI controller, but the properties on the model are not being bound.</p>
  
  <pre><code>public void Post([FromBody] Models.Users.User model) {
      throw new Exception(model.Id.ToString());
  }
  </code></pre>
  
  <p>The raw request is as follows:</p>
  
  <pre><code>POST http://diva2.local/siteapi/User HTTP/: diva2.local
  Connection: keep-alive
  Content-Length:: application/json, text/plain, */*
  Origin: http://diva2.local
  X-Requested-With: XMLHttpRequest
  User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.: application/json;charset=UTF: http://diva2.local/Users
  Accept-Encoding: gzip,deflate,sdch
  Accept-Language: en-US,en;q=: ISO-8859-1,utf-8;q=0.7,*;q=: .ASPXAUTH=4; __RequestVerificationToken=Rp_hUysjwCjmsxw2
  
  {"Id":3,"FirstName":"DIVA2","LastName":"User1","Username":"diva1","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}
  </code></pre>
  
  <p>Every example I can find tells me this should work, but <code>model.Id == null</code>.</p>
  
  <p>However, if I change the JSON to:</p>
  
  <pre><code>{User: {"Id":3,"FirstName":"DIVA2","LastName":"User1","Username":"diva1","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}}
  </code></pre>
  
  <p>everything binds correctly.</p>
  
  <p>This doesn't seem correct. I guess I could accept <code>JObject</code> as the parameter, and bind it up manually, but it feels like the above should Just Work (tm)?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>I've changed the method to return the model, and I still receive null.</p>
  
  <pre><code>public Models.Users.User Post(Models.Users.User user) {
      return user;
  }
  </code></pre>
  
  <p>And the response:</p>
  
  <pre><code>HTTP/1.1 200 OK
  Cache-Control: no-cache
  Pragma: no-cache
  Content-Type: application/json; charset=utf-8
  Expires: -1
  Server: Microsoft-IIS/8.0
  X-AspNet-Version: 4.0.30319
  X-MiniProfiler-Ids: ["a0fab514-d725-4d8f-9021-4931dc06ec4a","fdeeb9a8-9e36-41d8-91d3-5348e880e193","c1b4cc86-d7c3-4497-8699-baac9fa79bf1"]
  X-Powered-By: ASP.NET
  Date: Tue, 21 May 2013 09:06:00 GMT
  Content-Length: 4
  
  null
  </code></pre>