这个问题已经被问过很多次了,但我不认为我需要它。
我正在尝试在主页上实现登录表单,但此表单位于弹出的部分中,就像您在此站点上一样:http: //myanimelist.net。
我为我的登录表单创建了一个局部视图:
@model ArtWebShop.Models.customers
@section Validation {
@Scripts.Render("~/bundles/jqueryval")
}
<section id="login">
@using (Html.BeginForm("LoginValidate", "Login", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
@Html.ValidationSummary()
<fieldset>
<legend>Login</legend>
@Html.LabelFor(model => model.email)
@Html.TextBoxFor(m => m.email)
@Html.LabelFor(m => m.password)
@Html.PasswordFor(m => m.password)
<input type="submit" value="Login" class="button" />
</fieldset>
}
</section>
这显示在主页 (index.cshtml)上:
<section class="shown">
@Html.Partial("_LoginPartial")
@Html.ValidationSummary(true)
@Html.ValidationSummary()
</section>
局部视图正确显示。但现在出现了不起作用的部分。
如果您没有填写这些字段,则当您按下登录时,验证会在我的 LoginController 中完成,但是当我重定向时,我似乎无法将错误发送到我的主页视图。
[HttpPost]
public ActionResult LoginValidate(string redirect)
{
if (_unitOfWork.CustomersRepository.CostumerIsValid(Request.Form["email"], Request.Form["password"]))
{
if (!String.IsNullOrEmpty(redirect) || String.Compare(redirect, "none", StringComparison.OrdinalIgnoreCase) == 0)
{
if (redirect != null) Response.Redirect(redirect, true);
}
else
{
return RedirectToAction("index", "Home");
}
}
ModelState.AddModelError("email", "You entered an incorrect email address");
ModelState.AddModelError("password", "You entered an invalid password");
return RedirectToAction("index", "Home");
}
那是我的登录验证。由于没有填写任何错误,因此会将错误添加到 ModelState 中,然后重定向到主页。然而,这并没有向我显示错误。我猜这正是因为我重定向但我该如何解决这个问题?