这正在工作:
@page
@model test0201.Pages.IndexModel
@{
}
<form method="post">
<button type="submit" class="btn btn-primary">Test</button>
</form>
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace test0201.Pages
{
public class IndexModel : PageModel
{
public void OnGet()
{
}
public async Task OnPost()
{
Console.WriteLine("testtesttest");
}
}
}
这不是:
<form method="post">
<button type="submit" asp-page-handler="RefreshReturns" class="btn btn-primary">Test</button>
</form>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace test0201.Pages
{
public class IndexModel : PageModel
{
public void OnGet()
{
}
public async Task OnPostRefreshReturnsAsync()
{
Console.WriteLine("testtesttest");
}
}
}
处理程序无法正常工作。 ChatGPT 和 Google 没有帮助。我在这里缺少什么?首先,我认为我的方法不起作用,所以我尝试测试它并只放置 Console.Writeline。
尝试使用F12开发者工具检查生成的Html元素,如果表单如下所示,则表示Tag Helpers不可用于视图:
在这种情况下,您需要使用
@addTagHelper
指令来使标记帮助程序可用。
由于您的应用程序名为
test0201
,因此添加以下指令
在 Views/_ViewImports.cshtml
文件中将使 TagHelpers 添加到您的项目中:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, test0201
或者,您可以直接在索引视图页面(Index.cshtml)中添加以下代码:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
之后生成的 HTML 像这样:
然后点击按钮,我们可以看到会触发handler方法(记得设置断点)。
如果还是不行,请尝试在F12开发者工具的Console面板中检查是否有错误,并在Network面板中检查请求:请求url、http状态码、响应等。