简单 ASP.Net Core Razor 页面上的 HTTP 400

pau*_*sm4 1 c# razor asp.net-core

我正在尝试创建一个简单的“Hello world”ASP.Net Core 3.1 应用程序,但尝试发布表单时,我不断收到:

\n
\n

此页面\xe2\x80\x99 无法工作。如果问题仍然存在,请联系网站所有者。

\n

HTTP 错误 400

\n
\n

重现步骤:

\n
    \n
  1. MSVS2019 > 新建项目 > ASP.Net Core Web 应用程序,C#

    \n
  2. \n
  3. 删除Pages\\*中的样板、自动生成的代码,替换我自己的Index.cshtml和Index.cshtml.cs

    \n
  4. \n
  5. 运行程序。我看到了我的表格。

    \n
  6. \n
  7. 点击“提交”。我收到 HTTP 400。

    \n
  8. \n
\n

页面\\Index.cshtml.cs

\n
using Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.RazorPages;\n\nnamespace HelloUploads.Pages\n{\n    public class IndexModel : PageModel\n    { \n    \n        public IActionResult OnGet()\n        {\n            return Page();\n        }\n\n        public IActionResult OnPost()\n        {\n            return RedirectToPage("./Index");\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

索引.cshtml

\n
@page\n@model HelloUploads.Pages.IndexModel\n@{\n    ViewData["Title"] = "Test";\n}\n\n<form method="post">\n   <input type="submit" >\n</form>\n
Run Code Online (Sandbox Code Playgroud)\n

我确信问题很简单。我尝试了很多变体,并且已经敲了好几个小时的头。

\n

问:我做错了什么?有什么建议么?

\n

小智 12

您的问题可能是防伪令牌。在页面中添加@addTagHelper *、Microsoft.AspNetCore.Mvc.TagHelpers

@page
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@model HelloUploads.Pages.IndexModel
@{
    ViewData["Title"] = "Test";
}

<form method="post">
   <input type="submit" >
</form>
Run Code Online (Sandbox Code Playgroud)

在后面的代码中添加 [ValidateAntiForgeryToken] 属性

[ValidateAntiForgeryToken]
public IActionResult OnPost()
{
   return RedirectToPage("./Index");
}
Run Code Online (Sandbox Code Playgroud)

希望它有效!