У меня есть ControlController с одним видом - Index.cshtml.Маршрутизация не работает при отправке запроса DELETE к действию HttpDelete
Следующие 3 способа действия внутри этого контроллера:
//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 отлично работает, когда я иду/продуктов. Post работает отлично, когда я создаю новый продукт, используя/продукты. Удалить вообще не работает, я получаю 404, не найденный для/products/9. Я использую стандартный запрос AJAX с типом: DELETE.
Я использую обычные параметры маршрутизации по умолчанию MVC:
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
Вот что мой AJAX запрос выглядит следующим образом:
$(".js-delete-product").click(function() {
$.ajax({
type: "DELETE",
url: "products/" + $(this).data("id"),
success: onDeleteSuccess
});
});
Я также попытался отправки УДАЛИТЬ запрос в почтальона http://localhost:55555/products/1 чтобы убедиться, что это не мой jquery ajax и еще 404 не найден.
UPDATE: Если я отправить запрос DELETE только http://localhost:55555/products переходит в функцию, но, как вы ожидали бы парам идентификатор присваивается нулевое значение. Любая идея, почему это происходит? Я только хочу, чтобы он перешел в метод delete, если передан параметр, но когда передан параметр, он не входит (404 не найден).
Не могли бы вы попытаться отправить запрос DELETE на 'http: // localhost: 55555/products/index/1' и посмотреть, работает ли это? – rabelloo
Можете ли вы разместить свой код Ajax? –
@Dobbins Я обновил свой пост с помощью кода ajax. Я понятия не имею, почему это не сработает. Консоль бросает 404 не найденную ошибку и сообщает мне, что запрошенный URL-адрес: http: // localhost: 555555/products/1 –