Razor-Pages表单未命中POST方法 [英] Razor-pages form is not hitting the post method
本文介绍了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屋!
查看全文