Razor 页面“asp-page-handler”不起作用 [POST]

问题描述 投票:0回答:1

这正在工作:

@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。

asp.net asp.net-core razor-pages
1个回答
0
投票

尝试使用F12开发者工具检查生成的Html元素,如果表单如下所示,则表示Tag Helpers不可用于视图:

without tag helper

在这种情况下,您需要使用

@addTagHelper
指令来使标记帮助程序可用。

由于您的应用程序名为

test0201
,因此添加以下指令 在
Views/_ViewImports.cshtml
文件中将使 TagHelpers 添加到您的项目中:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, test0201

或者,您可以直接在索引视图页面(Index.cshtml)中添加以下代码:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

之后生成的 HTML 像这样:

with tag helpers

然后点击按钮,我们可以看到会触发handler方法(记得设置断点)。

success

如果还是不行,请尝试在F12开发者工具的Console面板中检查是否有错误,并在Network面板中检查请求:请求url、http状态码、响应等。

F12

© www.soinside.com 2019 - 2024. All rights reserved.