如何使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]
,它将输入操作方法。
答案 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>
。