我的帖子表单不起作用 - 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 Pages有误解,请先了解一下入门文档:
如何解决您的问题,您可以按照以下步骤操作:
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 页面后端代码
ReportBug.cshtml.cs
:
public class ReportBugModel : PageModel
{
public void OnGet()
{
}
public Report Report { get; set; } //add this...
public void OnPost(Report report)
{
}
}
结果:
如果您使用的是使用 areas 的 Razor Pages 表单,请确保特定区域中的
_ViewImport.cshtml
文件包含此行(或者您已在表单文件中为特定区域配置了 TagHelpers
):
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
如果
TagHelpers
对于模型类不可见,则在点击 POST 处理程序时,结果是一个带有类似 This page isn’t working right now
的消息的页面。