MVC3:无法返回登录验证错误消息到Index.cshtml与登录PartialView

问题描述:

我是新来的MVC(在WebForms 2年)。我想在我的Index.cshtml实现使用PartialView登录如下:MVC3:无法返回登录验证错误消息到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(“LogOnPartia升“),这反过来触发此:

[HttpPost] 
public ActionResult LogOnPartial(LogOnModel model) 
{ 
    return PartialView(model); 
} 

渲染之后,将‘不正确’的条目将保持在文本框中如预期的,但上述错误消息‘提供的用户名或密码不正确’。不显示。我猜这些错误消息不会在上面的方法中传递。

从部分视图返回时如何显示错误消息?

谢谢。


感谢马克,你的建议是非常有帮助的。最初我已经在我的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

错误信息未显示的地方?在验证总结? – VJAI 2012-07-09 16:26:26

您必须在窗体内使用@Html.ValidationSummary()才能显示模型验证错误。

Ex。

@using(Html.BeginForm()) 
{ 
    @Html.ValidationSummary() 
    .. fields 
}