为多个字段添加单个验证消息

时间:2015-11-20 08:08:43

标签: c# asp.net-mvc validation

我有一个密码重置页面,看起来像这样

enter image description here

我有验证,验证最近是否使用过新密码。

要求是如果最近使用过密码,则将新密码和确认密码字段标记为错误并显示验证消息,如下所示。

enter image description here

如何为这两个字段添加单个验证消息?

我试过这个

ModelState.AddModelError(newpasswordfieldname, "");
ModelState.AddModelError(confirmpasswordfieldname, AccountResources.FailMinPasswordHistory);

但显示错误"值password无效。"用于新密码字段。

除了使用TempData/ViewData之外,有没有办法实现这一点,即使用原生表单验证SDK?

2 个答案:

答案 0 :(得分:0)

您是否尝试使用AddModelError(String, String)重载?

ModelState.AddModelError(newpasswordfieldname, "This password was used too recently");
ModelState.AddModelError(confirmpasswordfieldname, "This password was used too recently");

向两个属性添加相同的自定义消息。

答案 1 :(得分:0)

由于我没有找到使用Native MVC验证SDK的解决方案,因此我不得不使用脏的解决方法。

在我的控制器中

ModelState.AddModelError(newpasswordfieldname, "DONOTSHOW");
ModelState.AddModelError(confirmpasswordfieldname, AccountResources.FailMinPasswordAge);

在我看来

@if(ViewData.ModelState["NewPassword"]!=null && 
    ViewData.ModelState["NewPassword"].Errors.First().ErrorMessage!="DONOTSHOW")
{
    @Html.ValidationMessageFor(model => model.NewPassword)
}