为什么 OnPost 在 ASP.NET 核心版本 5.0 中没有 "@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers" 就不会被击中

Why OnPost is not getting hit without "@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers" in ASP.NET Core version 5.0

我正在使用 ASP.NET CORE 5.0 版,并且我正在为我的网站使用 razor 页面 UI。我在 HTML:

中使用具有以下结构的简单 OnPost 方法时遇到问题
@page

@model EmptyOne.Web.Pages.SaysHelloModel
@{
}
<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Search</title>
</head>
<body>
    <p>Enter the name you wanna say hello two ;)</p>

    <form method="post">
        Search term:
        <input name="nameToHello" />
        <input type="submit" />
    </form>

    @* some logic to say hello if model is not null... *@
</body>
</html>

这是我的页面模型class:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace EmptyOne.Web.Pages
{
    public class SaysHelloModel : PageModel
    {
        public string guysName { get; set; }
        public void OnGet()
        {
            
        }

        
        public IActionResult OnPost(string nameToHello)
        {
            guysName = nameToHello;
            return Page();
        }
    }
}

当我尝试点击它时,它 returns 一个 HTTP 400 状态核心和一个空白页面,但由于某种原因,当我添加这个助手时:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

工作正常!

最终和工作视图(我没有更改页面模型中的任何内容 class):

@page

@model EmptyOne.Web.Pages.SaysHelloModel
@{
}
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Search</title>
</head>
<body>
    <p>Enter the name you wanna say hello two ;)</p>

    <form method="post">
        Search term:
        <input name="nameToHello" />
        <input type="submit" />
    </form>

    @* some logic to say hello if model is not null... *@
</body>
</html>

谁能给我解释一下这是为什么?我查找了一个 ASP.NET 核心版本 5.0 代码示例并看到了这个助手。我是否以任何方式使用这个助手?它与向我的页面处理程序发送 HTTP post 请求有什么关系?

Razor Pages 包含一个 anti-CSRF mechanism, known as request verification, by default. It relies on a token that is applied to a hidden form field being sent with each POST request. The hidden form field is generated automatically by the form tag helper。如果您从 post 中省略令牌值,例如通过禁用表单标签助手,框架 returns 一个 400 Bad Request。