FromBody no vinculante parámetro de cadena

Tengo un problema similar a ASP.NET MVC 4 RC Web API Parameter Binding Issue , pero estoy tratando de resolverlo utilizando el atributo [FromBody].

Fiddler informa la siguiente solicitud (excluyendo bits irrelevantes como la cadena del agente de usuario)

PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1 Host: localhost:82 Connection: keep-alive Content-Length: 11 Origin: http://localhost:3000 Content-Type: application/x-www-form-urlencoded Accept: application/json, text/javascript, */*; q=0.01 query=apple 

Mi acción de controlador es

 [HttpPut] public ShoppingListItemWebModel CreateShoppingListItem([FromBody]string query) { // query is null } 

Podría ajustar el parámetro en un tipo complejo, pero eso parece un truco para solucionar el problema. O podría poner la consulta en el URI, pero eso no se ajusta al patrón del rest de la API. ¿Es posible hacerlo de esta manera? Si es así, ¿dónde está mi error?

cambie su solicitud para ser

 PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1 Host: localhost:82 Connection: keep-alive Content-Length: 11 Origin: http://localhost:3000 Content-Type: application/x-www-form-urlencoded Accept: application/json, text/javascript, */*; q=0.01 =apple 

notar la falta de “consulta”

Si está utilizando AngularJS en lugar de jQuery, es posible que desee optar por la siguiente alternativa, ya que AngularJS utiliza el tipo de contenido application/json de manera predeterminada.

 PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1 Host: localhost:82 Connection: keep-alive Content-Length: 7 Origin: http://localhost:3000 Content-Type: application/json Accept: application/json, text/javascript, */*; q=0.01 'apple' 

Observe que el valor está envuelto en comillas de cadena (ya sea simple o doble).