У меня есть ProductsController только с одним представлением — Index.cshtml.
Внутри этого контроллера находятся следующие 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 отлично работает, когда я захожу в /products. Post отлично работает, когда я создаю новый продукт, используя /products. Удаление вообще не работает, я получаю 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
});
});
Я также попытался отправить запрос DELETE в почтальоне на http://localhost:55555/products/1 для убедитесь, что это не мой jquery ajax и все еще 404 не найден.
ОБНОВЛЕНИЕ: если я отправлю запрос DELETE только на http://localhost:55555/products он входит в функцию, но, как и следовало ожидать, для параметра id установлено значение null. Любая идея, почему это происходит? Я хочу, чтобы он перешел в метод удаления только в том случае, если передан параметр, но когда параметр передан, он не входит (404 не найден).
http://localhost:55555/products/index/1
и посмотреть, сработает ли это? - person rabelloo   schedule 19.12.2016