1

我是 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() 只显示注册错误消息?

4

1 回答 1

0

您必须使用@Html.ValidationSummary()表单内部来显示模型验证错误。

前任。

@using(Html.BeginForm())
{
   @Html.ValidationSummary()
   .. fields
}
于 2012-07-09T16:28:10.170 回答