C# Http Put不是从razor页面发送的
我尝试使用ASP.NET核心标记帮助程序创建一个简单的HTML表单,如下所示:C# Http Put不是从razor页面发送的,c#,rest,razor,asp.net-core-mvc,put,C#,Rest,Razor,Asp.net Core Mvc,Put,我尝试使用ASP.NET核心标记帮助程序创建一个简单的HTML表单,如下所示: <form asp-action="RemoveScheduledTenancyDeletion" method="put" asp-route-tenancyId="@Model.Tenancy.TenancyId"> <div class="form-group"> <input type="subm
<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>
我试图通过开发人员工具检查表单是否正确生成:
但是,在我看来,当我尝试发送表单时,我发现一个错误:
似乎整个请求以某种方式被转换为HttpGet
操作。
你知道什么是错的吗
在此范围之外,我有一个单独的REST API,其中此类操作被定义为HttpPut
,它可以与Angular和其他与API通信的客户端应用程序一起工作,因此我不认为有任何理由不在ASP.NET核心MVC应用程序中使用HttpPut
。我错过什么了吗?
干杯尝试将此装饰器添加到控制器操作中
[ValidateAntiForgeryToken]
在我看来,您的视图似乎正在发送防伪令牌,但您的操作并不期待它。HTML表单不支持PUT、DELETE等:仅支持GET和POST。如果需要发送PUT,则需要使用AJAX。默认情况下,ASP.NET Core会全局应用ValidationAntiForgeryTokenAttribute。无论如何,这与这里的任何事情都无关。PUT不是HTML表单支持的动词。我使用Visual Studio。我认为最好添加一个功能,自动检测HTML
表单上method=“put”
的使用情况,并通知开发人员不能使用它,例如,当试图编译项目时,我认为这可能是故意这样做的。它不是一个HTML规范,只是没有浏览器支持它。这可能会在未来某个时候发生变化(尽管我对此表示怀疑)。不过,Intellisense只会遵循规范,而不是浏览器如何选择实现上述规范。
[ValidateAntiForgeryToken]