J'ai une situation où j'ai deux méthodes, on accepte un poco et une autre liste de poco dans ma classe de contrôleur:Comment utiliser les méthodes surchargées ASP.Net WebApi?
[AcceptVerbs("PUT")]
[ActionName("Item")]
public void SaveItem([FromBody] Item item)
{
m_controller.SaveItem(item);
}
[AcceptVerbs("PUT")]
[ActionName("Items")]
public void SaveItems([FromBody] List<Item> items)
{
m_controller.SaveItem(items);
}
ma table de routage ressemble à quelque chose comme:
routes.MapHttpRoute("Item Route",
"api/item/{orderId}",
new
{
controller = "MyOrder",
action = "Item",
orderId = RouteParameter.Optional
});
routes.MapHttpRoute("Items Route",
"api/items/{orderId}",
new
{
controller = "MyOrder",
action = "Items",
orderId = RouteParameter.Optional
});
Cela fonctionne comme prévu . Mais j'ai pensé à refactoriser le code pour essayer de surcharger. J'ai essayé de surcharger les méthodes dans mon contrôleur et ai juste une route mais elle a échoué avec l'erreur 500 - Demande Invalide. Je pensais que webapi résoudrait l'appel en vérifiant le paramètre - s'il s'agit d'une liste, il appellera la méthode surchargée avec la liste comme paramètre sinon l'autre méthode. Je comptais faire quelque chose comme:
[AcceptVerbs("PUT")]
[ActionName("Item")]
public void SaveItem([FromBody] Item item)
{
m_controller.SaveItem(item);
}
[AcceptVerbs("PUT")]
[ActionName("Item")]
public void SaveItem([FromBody] List<Item> items)
{
m_controller.SaveItem(items);
}
ma table de routage ressemble à quelque chose comme:
routes.MapHttpRoute("Item Route",
"api/item/{orderId}",
new
{
controller = "MyOrder",
action = "Item",
orderId = RouteParameter.Optional
});
Quelle exception avez-vous? –
Je reçois toujours "Erreur 500 - Demande invalide". Rien beaucoup. –
Avez-vous eu accès à distance? –