我试图使用ASP.NET Core标记帮助器创建一个简单的HTML表单:
<form asp-action="RemoveScheduledTenancyDeletion" method="put" asp-route-tenancyId="@Model.Tenancy.TenancyId">
<div class="form-group">
<input type="submit" value="Remove sheduled tenancy deletion" class="btn btn-default" />
</div>
</form>
在TenancyController
中有一个简单的操作:
[HttpPut]
public async Task<IActionResult> RemoveScheduledTenancyDeletion(Guid tenancyId)
{
//some logic here
return RedirectToAction(nameof(List));
}
似乎整个请求都以某种方式转换为HttpGet
动作。
有什么主意吗?
在范围之外,我有一个单独的REST API,其中此类操作定义为HttpPut
,并且可以与Angular和其他与该API进行通信的客户端应用一起正常使用,所以我看不到我不应该在ASP.NET Core MVC应用程序中也使用HttpPut
的任何原因。我想念什么吗?
干杯
答案 0 :(得分:2)
HTML表单不支持PUT,DELETE等:仅支持GET和POST。如果需要发送PUT,则需要使用AJAX进行发送。
答案 1 :(得分:0)
尝试将此装饰器添加到Controller动作
[ValidateAntiForgeryToken]
在我看来,您的视图似乎正在发送防伪令牌,但您的操作并不期望它。