为了账号安全,请及时绑定邮箱和手机立即绑定

asp.net core razor pages 支持删除和放置请求

asp.net core razor pages 支持删除和放置请求

C#
慕的地6264312 2022-12-04 13:10:33
最近,我读到有关 asp.net core razor 页面中的请求处理,它说它支持head使用约定的请求:public void OnHead(){ }它工作得很好。然后我也尝试使用相同的约定删除。public void OnDelete(){ }但是当我使用邮递员发送删除请求时,它返回一个错误的请求(500)。我不确定我是否需要提供额外的配置来使用删除请求。任何人都可以帮助我。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

假设您有这样的标记:

<button type="submit" asp-page-handler="delete" 
        asp-route-id="@contact.Id">delete</button>

正确的删除方法是OnPostDelete(或OnPostDeleteAsync)。

所以,可以更新为:

public void OnPostDelete(int id){
}

文档状态:

按照惯例,根据方案根据处理程序参数的值来选择处理程序方法的名称 OnPost[handler]Async

此外,Async后缀是可选的:

命名后缀是可选的Async,但通常按照约定用于异步函数。


查看完整回答
反对 回复 2022-12-04
?
慕容森

TA贡献1853条经验 获得超18个赞

没有OnDeleteOnPut。这是因为 Razor 页面直接面向 Web 视图,即在浏览器选项卡/窗口中显示的页面。浏览器中没有发送 DELETE/PUT 请求的本机方式,因此没有理由支持它们。相反,此类任务是通过 HTML 表单元素处理的,该元素将通过 POST 发送。因此,您将使用OnPost()它来处理它。

文档建议创建一个新的用于删除的 Razor 页面,它有自己的OnGet方法OnPost,专门用于处理删除。或者,您可以简单地以OnPost[Something]. 对于删除,可能是OnPostDelete,而对于更新,您可能有OnPostUpdate. 名称无关紧要,除非您需要将其作为如下形式传递handler

<form asp-page="Foo" asp-handler="Delete">

如果您需要通过瘦客户端(HttpClient、AJAX、Postman 等)进行交互,那么您应该完全避免使用 Razor Pages,并坚持使用完全支持所有 HTTP 动词的传统控制器。


查看完整回答
反对 回复 2022-12-04
  • 2 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信