Paramètre de chaîne FromBody not binding

J’ai un problème similaire au problème de liaison des parameters de l’API Web ASP.NET MVC 4 RC , mais j’essaie de le résoudre en utilisant l’atsortingbut [FromBody].

Fiddler signale la requête suivante (à l’exclusion des bits non pertinents comme la chaîne de l’agent utilisateur)

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 

Mon action de contrôleur est

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

Je pourrais envelopper le paramètre dans un type complexe, mais cela semble être un hack pour résoudre le problème. Ou je pourrais mettre la requête dans l’URI, mais cela ne correspond pas au modèle du rest de l’API. Est-il possible de le faire de cette façon? Si oui, où est mon erreur?

changer votre demande pour être

 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 

remarquez le manque de “requête”

Si vous utilisez AngularJS au lieu de jQuery, vous pouvez opter pour l’alternative suivante, car AngularJS utilise par défaut l’ application/json type de contenu application/json .

 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' 

Notez que la valeur est encapsulée dans des guillemets (simples ou doubles).