没有从剃须刀页面发送Http Put

时间:2019-08-23 11:41:32

标签: c# rest razor asp.net-core-mvc put

我试图使用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));
    }

我试图通过开发人员工具检查表单是否正确生成: enter image description here

但是,当我尝试发送表单Im时遇到错误: enter image description here

似乎整个请求都以某种方式转换为HttpGet动作。 有什么主意吗?

在范围之外,我有一个单独的REST API,其中此类操作定义为HttpPut,并且可以与Angular和其他与该API进行通信的客户端应用一起正常使用,所以我看不到我不应该在ASP.NET Core MVC应用程序中也使用HttpPut的任何原因。我想念什么吗? 干杯

2 个答案:

答案 0 :(得分:2)

HTML表单不支持PUT,DELETE等:仅支持GET和POST。如果需要发送PUT,则需要使用AJAX进行发送。

答案 1 :(得分:0)

尝试将此装饰器添加到Controller动作

[ValidateAntiForgeryToken]

在我看来,您的视图似乎正在发送防伪令牌,但您的操作并不期望它。