猿问

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

最近,我读到有关 asp.net core razor 页面中的请求处理,它说它支持head使用约定的请求:

public void OnHead(){
}

它工作得很好。然后我也尝试使用相同的约定删除。

public void OnDelete(){
}

但是当我使用邮递员发送删除请求时,它返回一个错误的请求(500)。我不确定我是否需要提供额外的配置来使用删除请求。任何人都可以帮助我。


慕的地6264312
浏览 114回答 2
2回答

阿晨1998

假设您有这样的标记:<button&nbsp;type="submit"&nbsp;asp-page-handler="delete"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asp-route-id="@contact.Id">delete</button>正确的删除方法是OnPostDelete(或OnPostDeleteAsync)。所以,可以更新为:public&nbsp;void&nbsp;OnPostDelete(int&nbsp;id){ }文档状态:按照惯例,根据方案根据处理程序参数的值来选择处理程序方法的名称&nbsp;OnPost[handler]Async此外,Async后缀是可选的:命名后缀是可选的Async,但通常按照约定用于异步函数。

慕容森

没有OnDelete/&nbsp;OnPut。这是因为 Razor 页面直接面向 Web 视图,即在浏览器选项卡/窗口中显示的页面。浏览器中没有发送 DELETE/PUT 请求的本机方式,因此没有理由支持它们。相反,此类任务是通过 HTML 表单元素处理的,该元素将通过 POST 发送。因此,您将使用OnPost()它来处理它。文档建议创建一个新的用于删除的 Razor 页面,它有自己的OnGet方法OnPost,专门用于处理删除。或者,您可以简单地以OnPost[Something].&nbsp;对于删除,可能是OnPostDelete,而对于更新,您可能有OnPostUpdate.&nbsp;名称无关紧要,除非您需要将其作为如下形式传递handler:<form&nbsp;asp-page="Foo"&nbsp;asp-handler="Delete">如果您需要通过瘦客户端(HttpClient、AJAX、Postman 等)进行交互,那么您应该完全避免使用 Razor Pages,并坚持使用完全支持所有 HTTP 动词的传统控制器。
随时随地看视频慕课网APP
我要回答