WebApi - Lier de deux Uri et du Corps

Est-il possible de lier un modèle à partir de l'Uri et le Corps?

Par exemple, le suivant:

routes.MapHttpRoute(
    name: "API Default",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

public class ProductsController : ApiController
{
    public HttpResponseMessage Put(UpdateProduct model)
    {

    }
}

public class UpdateProduct 
{
    int Id { get; set;}
    string Name { get; set; }
}

Est-il possible de créer un liant de façon qu'un PUT à

/api/produits/1

avec un JSON corps de:

{
    "Name": "Product Name"
}

entraînera la UpdateProduct modèle rempli avec Id = 1 et Name = "Product Name"?

Mise à jour

Je comprends que je pourrais modifier l'action de signature à

public HttpResponseMessage Put(int id, UpdateProduct model)
{

}

Cependant, comme indiqué dans la question, j'ai particulièrement envie de se lier à un seul modèle d'objet

J'ai aussi posté cette question sur le WebApi Codeplex forum de discussion

  • Si vous supprimez le Id de UpdateProduct et à votre action de signature: public HttpResponseMessage Put(int id, UpdateProduct model) il serait également travailler sans modèle de liaison personnalisé.
  • Découvrez cet article, il semble que ce soit ce dont vous avez besoin: blogs.msdn.com/b/jmstall/archive/2012/04/18/...
  • Avez-vous jamais trouver une solution à cela? Je vais avoir le même problème. À mon avis, c'est vraiment stupide et peu intuitive comportement.
  • Complètement pas intuitive du comportement... surtout que ça fonctionne, tout simplement en MVC...
InformationsquelleAutor kimsagro | 2013-07-15