【发布时间】:2015-10-14 14:05:48
【问题描述】:
我有一个关于局部视图的问题。我想在我创建的标题登录表单中显示。在 HomeController 我有 2 个动作:一个是登录,另一个是使用 httppost 方法登录。 在部分视图(_Layout.cshtml)中,我有一个代码 - 只发送页脚 div:
<td style="text-align:center">
<h3>Bookstore</h3>
@Html.Partial("_LoginPartial")
</td>
在登录视图中我有:
@using(Html.BeginForm("Login", "Home", FormMethod.Post)){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table>
<tr>
<td>@Html.LabelFor(a=>a.Username)</td>
<td>@Html.TextBoxFor(a=>a.Username)</td>
<td>@Html.ValidationMessageFor(a=>a.Username)</td>
</tr>
<tr>
<td>@Html.LabelFor(a=>a.Password)</td>
<td>@Html.PasswordFor(a=>a.Password)</td>
<td>@Html.ValidationMessageFor(a=>a.Password)</td>
</tr>
<tr>
<td>
<input type="submit" value="Login" />
</td>
</tr>
</table>}
控制器
public ActionResult Login()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(Users u)
{
if (ModelState.IsValid) {
using (DatabaseLoginEntities dl = new DatabaseLoginEntities()) {
var v = dl.Users.Where(a => a.Username.Equals(u.Username) && a.Password.Equals(u.Password)).FirstOrDefault();
if (v != null) {
Session["LogedUserId"] = v.UserAccountID.ToString();
Session["LogedUserFullName"] = v.FullName.ToString();
return RedirectToAction("AfterLogin");
}
}
}
return PartialView("_LoginPartial", u);
}
当按下登录按钮时,mvc 会将我切换到显示登录表单的单独页面。我不希望这种情况发生。它必须留在标题中。功能还可以,但我有问题如何仅在标题中显示。有谁知道我错在哪里?
【问题讨论】:
-
显示登录操作的控制器代码