Razor-pages 表单未命中 post 方法

Razor-pages form is not hitting the post method

我的 post 表单不工作 - C# class 中的方法甚至没有执行。 我尝试了一些我发现的解决方案,但仍然无法处理。

我的简单看法ReportBug.cshtml:

@page
@model Report

<div class="m-3 p-3">
    <div class="text-center">
        <h4 class="display-4">Report a bug</h4>
    </div>

    <form method="post">
        <div class="row">
            @(Html.Kendo()
                .TextBoxFor(t => t.Title)
                .Placeholder("Title")
                .HtmlAttributes(new { style = "width: 25%" })
            )
        </div>
            <button type="submit" class="btn btn-primary">Submit</button>
    </form>
</div>

我的 C# class 是:

public class ReportBugModel : PageModel
{
    public void OnGet()
    {
    }

    public void OnPost()
    {
    }

    public void OnPost(Report report)
    {
    }
}

如您所见,我尝试在不带参数和带 1 个参数(报表模型)的情况下调用此方法。 所以总结一下:

在这些 post 方法被命名为 OnPostReport(Report report) 之前,我使用了标签助手 asp-page-handler="Report",但也失败了。

到目前为止,在单击 Submit 按钮后,我的页面只是重新加载,控制台中没有任何错误。

#编辑 这是生成的 HTML 代码:

<div class="m-3 p-3">
    <div class="text-center">
        <h4 class="display-4">Report a bug</h4>
    </div>

    <form method="post">
        <div class="row">
            <span class="k-widget k-textbox" style="width: 25%;"><input id="Title" name="Title" style="width: 100%;" value="" data-role="textbox" aria-disabled="false" class="k-input" placeholder="Title" autocomplete="off"></span><script>kendo.syncReady(function(){jQuery("#Title").kendoTextBox({"placeholder":"Title"});});</script>
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
    <input name="__RequestVerificationToken" type="hidden" value="CfDJ8Bbl_ufFcklEjkehOGdz8BtSJK0b5YyLKm-ID2YYYWig_98ZBjFzd9-V_cDDrtBJqiKXJmW7blydpKIKa9qdz9sZZldP3cmya-BVho3uUIbW3_Ob-BVrLmAUi_KHq3eKEAE7nrELLwzebuzXTmnsP6sK2MubiEb3lK3mqOzmVERB2NmXvpI43QmwL-lGUr43Rw">
    </form>

</div>

你可能对Razor Pages有误解,请先了解get started document:

关于如何解决您的问题,您可以按照以下步骤操作:

1.Change 你的 Razor Pages ReportBug.cshtml(你必须将 @model Report 更改为 @model ReportBugModel):

@page
@model ReportBugModel      //change here...
<div class="m-3 p-3">
    <div class="text-center">
        <h4 class="display-4">Report a bug</h4>
    </div>

    <form method="post">
        <div class="row">
            @(Html.Kendo()
                .TextBoxFor(t => t.Report.Title)    //also change here...
                .Placeholder("Title")
                .HtmlAttributes(new { style = "width: 25%" })
            )
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
    </form>
</div>

2.Change 您的 Razor 页面后端代码 ReportBug.cshtml.cs:

public class ReportBugModel : PageModel
{
    public void OnGet()
    {
    }
    public Report Report { get; set; }   //add this...
    public void OnPost(Report report)
    {
    }
}

结果: