首页 > 解决方案 > 简单 ASP.Net Core Razor 页面上的 HTTP 400

问题描述

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

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

HTTP 错误 400

重现步骤:

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

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

  3. 运行程序。我看到了我的表格。

  4. 点击“提交”。我得到 HTTP 400。

页面\Index.cshtml.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace HelloUploads.Pages
{
    public class IndexModel : PageModel
    { 
    
        public IActionResult OnGet()
        {
            return Page();
        }

        public IActionResult OnPost()
        {
            return RedirectToPage("./Index");
        }
    }
}

索引.cshtml

@page
@model HelloUploads.Pages.IndexModel
@{
    ViewData["Title"] = "Test";
}

<form method="post">
   <input type="submit" >
</form>

我确定问题很简单。我尝试了很多变化,我已经敲了几个小时。

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

标签: c#asp.net-corerazor

解决方案


您的问题可能是防伪令牌。将@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>

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

[ValidateAntiForgeryToken]
public IActionResult OnPost()
{
   return RedirectToPage("./Index");
}

希望它有效!


推荐阅读