最近,我读到有关 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
,但通常按照约定用于异步函数。
慕容森
TA贡献1853条经验 获得超18个赞
没有OnDelete
/ OnPut
。这是因为 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 动词的传统控制器。
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消