MVC输入URL不起作用,链接做

时间:2014-12-10 19:31:49

标签: asp.net-mvc asp.net-mvc-routing

我有一个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 }
        );

1 个答案:

答案 0 :(得分:1)

该操作需要POST:

[AcceptVerbs(HttpVerbs.Post)]

如果您使用POST方法提交表单(您是FormMethod.Post),那么它将按预期工作。你观察到了什么。但是,只需单击链接或手动输入地址即是 GET 请求,而不是 POST 请求。所以没有匹配的动作。因此,404错误。

为了接受任何请求,只需删除AcceptVerbs用法。但请记住,GET请求不包含表单数据。您在代码中显示的操作不会使用任何表单数据,所以没关系。 (但那你为什么要张贴一张表格呢?)