我是 MVC 的新手(在 WebForms 工作了 2 年)。我正在尝试在我的 Index.cshtml 中使用 PartialView 实现登录,如下所示:
@Html.Action("LogOnPartial")
如果用户名或密码不正确,调用的方法将按预期到达此行:
ModelState.AddModelError("", "The user name or password provided is incorrect.");
因为它是部分视图,所以我将模型传递回 Index.cshtml,如下所示,以显示“不正确”条目:
// If we got this far, something failed, redisplay form
return View("Index", model);
然后 Index.cshtml 将调用 @Html.Action("LogOnPartial"),这反过来会触发这个:
[HttpPost]
public ActionResult LogOnPartial(LogOnModel model)
{
return PartialView(model);
}
渲染后,“不正确”的条目将按预期保留在文本框中,但上述错误消息“提供的用户名或密码不正确”。不显示。我猜错误消息没有在上述方法中传递。
从局部视图返回时如何显示错误消息?
谢谢。
谢谢 Marks,你的建议很有帮助。最初我已经在 LogOnPartial.cshtml 的末尾包含了@Html.ValidationSummary(),但不知何故错误消息没有出现在 Index.cshtml 中。现在我将 @Html.ValidationSummary() 移动到 Index.cshtml 如下:
@Html.Action("LogOnPartial")
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
现在它工作正常,我可以看到登录错误消息。
但是,现在我遇到了另一个问题。我的 Index.cshtml 中有两个部分视图。一个用于 LogOnPartial.cshtml,另一个用于 SignUpPartial.cshtml(您可能想看看 www.iguardpayroll.com,它是用 WebForms 编写的,您会看到左栏中有两个框:一个用于登录,另一个用于注册)。
除了在@Html.Action("LogOnPartial") 正下方添加@Html.ValidationSummary() 之外,我还需要在@Html.Action("SignUpPartial") 下添加它以显示由注册过程(例如电子邮件已经存在!)。但是,如果我这样做,相同的 LogOn 错误消息将在 LogOn 部分和 SignUp 部分下出现两次。
<div>
@Html.Action("LogOnPartial")
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
</div>
<div>
@Html.Action("SignUpPartial")
@Html.ValidationSummary(true, "Sign Up was unsuccessful. Please correct the errors and try again.")
</div>
我怎么知道第一个 @Html.ValidationSummary() 只显示与 LogOnPartial 相关的错误消息,而第二个 @Html.ValidationSummary() 只显示注册错误消息?