Razor Pages返回400

时间:2019-10-05 16:16:53

标签: c# asp.net-core post asp.net-core-mvc razor-pages

我在索引页面上有一个ViewComponent,可将其发布到另一个页面LogTransaction。当我发布到LogTransaction页面时,它返回400。我知道找到了该页面,因为当我向LogTransaction发出GET请求时,它可以正常工作。但是任何时候我尝试发布到它,它都会返回400。

ViewComponent的Default.cshtml包含在localhost:5001 / Index:

@using BudgetTracker.BudgetSquirrel.Web.Pages

@model BudgetViewModel

...

<form action="/LogTransaction" method="post">
    <!-- Inputs Here -->
    <button type="submit">Save</button>
</form>

LogTransaction.cshtml.cs

namespace BudgetTracker.BudgetSquirrel.Web.Pages
{
    public class LogTransactionModel : BasePageModel // extends PageModel
    {
        public void OnGet()
        {}

        public IActionResult OnPost()
        {
            Console.WriteLine("Hi");
            return Page();
        }
    }
}

LogTransaction.cshtml

@page
@model BudgetTracker.BudgetSquirrel.Web.Pages.LogTransactionModel
@{
    ViewData["Title"] = "LogTransaction";
}

单击“保存”按钮时,在/ LogTransaction的POST请求中得到400。我知道它正在查找页面,因为我可以向/ LogTransaction发出成功的GET请求。只是发布无效的请求。

编辑:找到解决方案

我没有在表格中输入CSRF令牌。您可以手动将其放入,也可以在表单上使用asp页面帮助程序而不是操作。该助手会自动将相应的CSRF令牌输入自动放入

1 个答案:

答案 0 :(得分:1)

我没有在表单中输入 CSRF 令牌。您可以手动将其放入,也可以使用表单上的 asp-page helper 而不是 action。该助手自动将CSRF令牌输入明显