我有一个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),但我不知道接线是如何工作的。
格雷格
答案 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 })) {