如何从mvc 4中的按钮单击调用控制器/操作

时间:2015-12-01 10:01:05

标签: asp.net-mvc

我有一个简单的登录屏幕。单击按钮我想调用Home Controller中定义的LoginUser操作。我收到HTTP 404,资源未找到错误。单击按钮后的地址栏显示“http://localhost:13805/Home/LoginUser”。我不确定我在这里做错了什么。非常感谢任何帮助。

这是按钮:

<button type="submit" onclick="location.href='@Url.Action("LoginUser", "Home")'" class="btn btn-default">Submit</button>

以下是Home controller中定义的操作:

[HttpPost]
    public ActionResult LoginUser(string username, string password)
    {
        bool loginSuccess = false;
        if (!HttpContext.User.Identity.IsAuthenticated)
        {
            AuthenticationMode = System.Configuration.ConfigurationManager.AppSettings["AuthenticationMode"];
            if (AuthenticationMode.Equals("Forms"))
            {
                int userId = CheckUserLogin(username);
                if (userId > 0)
                {
                    CurrentUserId = userId;
                    FormsAuthentication.SetAuthCookie(username, false);
                    LoadMenu();
                    loginSuccess = true;
                }
                else
                {
                    loginSuccess = false;
                }
            }
            else
            {
                loginSuccess = false;
            }
        }
        else
        {
            loginSuccess = true;
        }

        if (loginSuccess)
        {
            return RedirectToAction("Index", "home");
        }
        else
        {
            return RedirectToAction("Login", "home");
        }            
    }

2 个答案:

答案 0 :(得分:1)

您的提交按钮不应有onclick操作。

它应该提交一个表格,其行动是您的终点(&#34; LoginUser&#34;,&#34; Home&#34;),您已经正确设置接受HttpPost

你需要一个这样的表格:

@using (Html.BeginForm("LoginUser", "Home", FormMethod.Post)){

<!-- form here -->
<button type="submit" class="btn btn-default">Submit</button>

}

答案 1 :(得分:-1)

或者,您可以将按钮类型从“提交”更改为“按钮”,然后您的代码应该按原样运行。

以下是我的工作代码示例