J'ai un ProductsController avec un seul View - Index.cshtml.Le routage ne fonctionne pas lors de l'envoi d'une requête DELETE à une action HttpDelete
Les 3 méthodes d'action suivantes sont à l'intérieur de ce contrôleur:
//http://localhost:55555/products
[HttpGet]
public IActionResult Index()
{
}
//http://localhost:55555/products
[HttpPost]
public IActionResult Index(ProductViewModel product)
{
}
//http://localhost:55555/products/1
[HttpDelete("{id}")]
public IActionResult Index([FromRoute] int id)
{
}
Get fonctionne parfaitement bien quand je vais à/produits. Post fonctionne parfaitement bien lorsque je crée un nouveau produit en utilisant/products. Supprimer ne fonctionne pas du tout, je reçois un 404 introuvable pour/products/9. J'utilise une requête AJAX standard avec le type: DELETE.
J'utilise les paramètres de routage classiques par défaut MVC:
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
Voici ce que ma demande AJAX ressemble:
$(".js-delete-product").click(function() {
$.ajax({
type: "DELETE",
url: "products/" + $(this).data("id"),
success: onDeleteSuccess
});
});
J'ai aussi essayé d'envoyer une demande de suppression dans postier à http://localhost:55555/products/1 pour m'assurer que ce n'était pas mon ajax jquery et encore 404 pas trouvé.
MISE À JOUR: Si j'envoie une demande SUPPRIMER juste http://localhost:55555/products il va dans la fonction, mais comme on peut s'y attendre l'identifiant est param défini sur null. Une idée de pourquoi cela se passe? Je veux seulement qu'il entre dans la méthode delete si un param est passé, mais quand un param est passé, il ne va pas dans (404 not found).
Pourriez-vous s'il vous plaît essayer d'envoyer une demande DELETE à 'http: // localhost: 55555/products/index/1' et voir si cela fonctionne? – rabelloo
Pouvez-vous poster votre code Ajax? –
@Dobbins J'ai mis à jour mon message avec le code ajax. Je ne sais pas pourquoi ça ne marcherait pas. La console lance une erreur 404 non trouvée et me dit que l'URL demandée est: http: // localhost: 555555/products/1 –