Это не проблема с ASP.NET Core MVC asp-action
Tag Helper - проблема заключается в том, что delete
не поддерживается method
в формах HTML (см. Раздел method
здесь ).
Хотя разные браузеры могут обрабатывать его по-разному, Chrome просто выдает запрос GET
, когда видит delete
в качестве метода HTML-формы.Когда вы удаляете [HttpDelete]
из вашего действия Delete
, по умолчанию используется значение GET
(как если бы вы добавили [HttpGet]
), поэтому глагол GET
, используемый Chrome, теперь попадает в ваш Delete
action.
Чтобы исправить это, я предлагаю использовать глагол POST
, который можно вызвать, используя method
из post
в вашей форме и добавив [HttpPost]
к вашему действию удаления.Вот как это выглядит:
HTML
<a
class="btn"
asp-action="Delete"
asp-controller="Home"
asp-route-accountKey="@Model.Item1.AccountKey"
method="post">Delete</a>
C #
[HttpPost]
public void Delete(string accountKey) { }
Использование post
предпочтительнее использования get
по причинам, указанным здесь .