使用beginform发布时,MVC中的资源未找到错误

时间:2017-03-28 07:12:58

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-3 model-view-controller

以下代码未按预期正常工作。

控制器有一个动作方法

[HttpPost]
        public ActionResult LoginResult()
        {
            string name = Request.Form["name"];             
            return View("Dashboard");
        }
     public ActionResult Dashboard()
    {
        string strName = Request["username"].ToString();
        return View();
    }

并且在视图中我有一个表格

 @using (Html.BeginForm("LoginResult", "Dashboard", FormMethod.Post))
    {  
     @Html.EditorFor(model =>model.username)
    <button type="button" id="ajax_method">submit Via AJAX</button>

    }

并使用函数提交此内容

<script>       
    $(function () {
        $('#ajax_method').click(function (e) {
            e.preventDefault();    
            $.ajax({
                type: "POST",
                url: "Dashboard/LoginResult",                             //Your Action name in the DropDownListConstroller.cs
                data: "{'AJAXParameter1':'" + $('#username').val() + "'}",  //Parameter in this function, Is case sensitive and also type must be string
                contentType: "application/json; charset=utf-8",
                dataType: "json"

            }).done(function (data) {
                //Successfully pass to server and get response
                if (data.result = "OK") {
                    alert("submit successfully.");
                }
            }).fail(function (response) {
                if (response.status != 0) {
                    alert(response.status + " " + response.statusText);
                }
            });
        });

    });
</script>

但点击按钮时出现404错误。

即使我尝试在路由配置中添加路由规范。

   routes.MapRoute(
            name: "login",
           url: "{controller}/{action}/{id}",
           defaults: new { controller = "Dashboard", action = "LoginResult", id = UrlParameter.Optional }
        );

再次修改了cshtml。但这也行不通。

 @using (Html.BeginForm("login", "Dashboard", FormMethod.Post))
    {  
     @Html.EditorFor(model =>model.username)
    <button type="button" id="ajax_method">submit Via AJAX</button>

    }

这可能是一个愚蠢的错误,但它破坏了我的一天。任何人都可以伸出援手来解决这个问题。

2 个答案:

答案 0 :(得分:0)

在我的情况下,删除默认路由会导致我的问题。

 routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { action = "Index", id = UrlParameter.Optional }
            );

添加这个解决了我的问题。因为我是webforms和mvc的混合项目。我没有注意到它。

答案 1 :(得分:-1)

@using (Html.BeginForm("Action Name", "Controller Name", FormMethod.Post))

我认为你必须改变&#34;仪表板&#34;到您的控制器名称