我是MVC的新手(在WebForms工作了2年)。我正在尝试使用我的Index.cshtml中的PartialView实现Login,如下所示:
@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(您可能需要查看用WebForms编写的www.iguardpayroll.com,您会看到左栏中有两个框:一个用于登录,另一个用于注册)。
除了在@ 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()仅显示注册错误消息?
答案 0 :(得分:0)
您必须使用表单中的@Html.ValidationSummary()
来显示模型验证错误。
实施例
@using(Html.BeginForm())
{
@Html.ValidationSummary()
.. fields
}