Razor-Pages表单未命中POST方法 [英] Razor-pages form is not hitting the post method

查看:17
本文介绍了Razor-Pages表单未命中POST方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的POST表单不起作用--C#类中的方法甚至没有执行。 我试了一些我找到的汤,但还是受不了。

我的简单视图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#类是:

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

    public void OnPost()
    {
    }

    public void OnPost(Report report)
    {
    }
}

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

  • 我在视图导入中@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
  • 我尝试了标记帮助器asp-antiforgery="true"

之前这些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页面,请先学习get started document

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

1.更改您的Razor页面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.更改Razor Page后端代码ReportBug.cshtml.cs

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

结果:

这篇关于Razor-Pages表单未命中POST方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆