如何使asp-action标记帮助程序进行http删除?

时间:2018-10-05 07:06:09

标签: c# asp.net-core

如何使asp-action标记帮助程序http删除?

此刻我有下面的代码不起作用

<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 :(得分:0)

这不是ASP.NET Core MVC asp-action标记帮助程序的问题-问题归结为HTML格式不支持delete的事实{参见method部分here)。

尽管不同的浏览器可能会以不同的方式处理它,但Chrome只会在将method视为HTML表单的方法时才发出GET请求。当您从delete动作中删除[HttpDelete]时,它默认为Delete(就好像您添加了GET),这就是[HttpGet]动词的原因被Chrome使用的行为现在会击中您的GET操作。

为了解决这个问题,我建议使用Delete动词,该动词可以使用表单中POST的{​​{1}}并将其添加到删除中来触发行动。看起来是这样的:

HTML

method

C#

post

出于here引用的原因,与使用[HttpPost]相比,首选使用<a class="btn" asp-action="Delete" asp-controller="Home" asp-route-accountKey="@Model.Item1.AccountKey" method="post">Delete</a>