【问题标题】:Razor pages: how to debug wrong page handler used when posting form?剃刀页面:如何调试发布表单时使用的错误页面处理程序?
【发布时间】:2021-02-21 11:56:39
【问题描述】:

我有一个包含此代码的表单:

<form asp-page="TodoItem" asp-page-handler="Delete" method="post" id="myItem">

当我在浏览器中提交此表单时,会根据浏览器 F12 DevTools 中的网络选项卡向https://localhost:44311/TodoItem?handler=Delete 发送 POST。到目前为止一切顺利。

但是在我的 Razor Pages 项目中发生的情况是,在我的 TodoItempage 上,OnPost 正在运行,而不是我想要运行的 Delete 方法。

我该如何调试呢?我的 Microsoft.AspNetCore.Routing 的日志级别已经在 Trace,它只显示日志中的 URL,而不是 URL 中的查询字符串。

似乎我可以用任何东西替换处理程序名称,所以TodoItem?handler=Foobarzy 也运行OnPost,它完全静默失败 - Visual Studio 没有告诉我我正在使用 IntelliSense 指定一个不存在的处理程序,日志(在控制台中)并没有告诉我浏览器发出了奇怪的请求。这正常吗?

【问题讨论】:

    标签: asp.net-core razor-pages


    【解决方案1】:

    根据https://www.learnrazorpages.com/razor-pages/handler-methods,你的方法应该命名为OnPost<Action>Async。传递给 page-handler 属性的值是不带 OnPost 前缀或 Async 后缀的处理程序方法的名称。这是真的吗?你能提供处理程序代码吗?

    【讨论】:

    • 谢谢,我将它命名为 OnPostDelete(没有在名称中添加异步),它可以工作!还是觉得很难调试,我改用 C# 来避免这样的静默错误。
    • 没问题,async后缀通常用来表示方法是否异步
    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 2019-07-04
    • 2020-09-08
    • 2018-09-14
    • 1970-01-01
    • 2020-06-24
    • 2015-02-03
    • 2022-11-29
    相关资源
    最近更新 更多