我有一个MVC网站。我有一个表单提交(在这种情况下它不提交数据),它在Controller中触发一个Action并返回一个View。如果我刷新,它要求重新提交表单并起作用。如果我点击" awesome bar"中的URL或者其他什么,然后点击Enter,我得到404资源无法找到错误。
显示的网址是/ pts / reports / subject。我不知道发生了什么。有什么建议吗?
控制器中的操作:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Subject()
{
return View(new SubjectModel());
}
形式:
<% using (Html.BeginForm("Subject", "Reports", FormMethod.Post, new {@class = "form-a"}))
{ %>
<fieldset>
<h5 class="section-header">Subject</h5>
<div class="positionbottom">
<button type="submit" name="Submit" value="csv" class="right">Web</button>
</div>
</fieldset>
<% } %>
图路线:
context.MapRoute(
"Pts_Reports",
"pts/reports/{action}/{id}",
new { controller = "Reports", action = "Index", id = UrlParameter.Optional }
);
答案 0 :(得分:1)
该操作需要POST:
[AcceptVerbs(HttpVerbs.Post)]
如果您使用POST方法提交表单(您是FormMethod.Post
),那么它将按预期工作。你观察到了什么。但是,只需单击链接或手动输入地址即是 GET 请求,而不是 POST 请求。所以没有匹配的动作。因此,404错误。
为了接受任何请求,只需删除AcceptVerbs
用法。但请记住,GET请求不包含表单数据。您在代码中显示的操作不会使用任何表单数据,所以没关系。 (但那你为什么要张贴一张表格呢?)