提交按钮在哪里连接到控制器?

时间:2013-12-12 17:26:49

标签: asp.net-mvc

我有一个MVC项目。

为了登录,我创建了一个窗口,然后在窗口中放置了一个部分视图,它显示得很好。问题是,如何在控制器中捕获结果,以便我可以实际进行后端登录?

这是基于VS中的示例MVC 4项目的_LoginPartial;

<section id="loginForm">
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

<fieldset>
    <legend>Log in Form</legend>
    <ol>
        <li>
            @Html.LabelFor(m => m.UserName)
            @Html.TextBoxFor(m => m.UserName)
            @Html.ValidationMessageFor(m => m.UserName)
        </li>
        <li>
            @Html.LabelFor(m => m.Password)
            @Html.PasswordFor(m => m.Password)
            @Html.ValidationMessageFor(m => m.Password)
        </li>
        <li>
            @Html.CheckBoxFor(m => m.RememberMe)
            @Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" })
        </li>
    </ol>
    <input type="submit" value="Log in" />
</fieldset>

}

换句话说,提交到哪里去了?我希望它调用AccountController.Login(model,returnUrl),但我不知道接线是如何工作的。

格雷格

2 个答案:

答案 0 :(得分:1)

<section id="loginForm">

@* Change the Html.BeginForm as below *@
@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl })) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

<fieldset>
    <legend>Log in Form</legend>
    <ol>
        <li>
            @Html.LabelFor(m => m.UserName)
            @Html.TextBoxFor(m => m.UserName)
            @Html.ValidationMessageFor(m => m.UserName)
        </li>
        <li>
            @Html.LabelFor(m => m.Password)
            @Html.PasswordFor(m => m.Password)
            @Html.ValidationMessageFor(m => m.Password)
        </li>
        <li>
            @Html.CheckBoxFor(m => m.RememberMe)
            @Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" })
        </li>
    </ol>
    <input type="submit" value="Log in" />
</fieldset>
}

然后在你的控制器中,确保你有一个具有[HttpPost]属性的ActionMethod并接受你的模型,如下所示:

[HttpPost]
public ActionResult Login(LoginViewModel model) 
{
    // process login
}

答案 1 :(得分:0)

您需要将actionName/controllerName参数传递给Html.BeginForm

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl })) {

使用FormExtensions.BeginForm