Как сделать так, чтобы asp-action tag helper делал http delete? - PullRequest
0 голосов
/ 05 октября 2018

Как сделать так, чтобы asp-action tag helper делал http delete?

На данный момент у меня есть следующий код, который не работает

<a class="btn" asp-action="Delete" asp-controller="Home" asp-route-accountKey="@Model.Item1.AccountKey" method="delete">Delete</a>

Контроллер

[HttpDelete]
public void Delete(string accountKey)
{

}

Без [HttpDelete] входит в метод действия.

1 Ответ

0 голосов
/ 05 октября 2018

Это не проблема с ASP.NET Core MVC asp-action Tag Helper - проблема заключается в том, что delete не поддерживается method в формах HTML (см. Раздел method здесь ).

Хотя разные браузеры могут обрабатывать его по-разному, Chrome просто выдает запрос GET, когда видит delete в качестве метода HTML-формы.Когда вы удаляете [HttpDelete] из вашего действия Delete, по умолчанию используется значение GET (как если бы вы добавили [HttpGet]), поэтому глагол GET, используемый Chrome, теперь попадает в ваш Deleteaction.

Чтобы исправить это, я предлагаю использовать глагол 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 по причинам, указанным здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...