如何显示与提交的表单完全对应的验证摘要

时间:2016-01-27 08:37:40

标签: c# .net asp.net-mvc validation model-binding

这篇文章讨论了同样的问题:Multiple forms in MVC view: ModelState applied to all forms

我已经跟随帖子并且在同一视图上有多个表单,自定义编辑器模板,已创建并注册了自定义模型绑定器。 Here is the accompanying gist

当我在 PasswordEditorViewModel.cshtml编辑器模板中使用Html.ValidationResultFor()助手时,我得到了所需的结果:

<li class="error">@Html.ValidationMessageFor(i => i.OldPassword)</li>
<li class="error">@Html.ValidationMessageFor(i => i.NewPassword)</li>
<li class="error">@Html.ValidationMessage("PasswordChangeError.WrongPassword")</li>

此代码完全针对我发布的表单返回验证错误。

另一方面,当我在同一个编辑器模板中使用Html.ValidationSummary()帮助程序时,验证结果会在所有表单中传播,尽管事实上我只发布了一个:

enter image description here

这是正常行为吗?或者我错过了代码中的某些内容?

1 个答案:

答案 0 :(得分:1)

使用@ Html.ValidationSummary时,它不记得发布了哪个,以及通过哪个提交按钮。我过去处理这个问题的方法是

<input type="submit" value="button1" />
@if (Request["button1"] != null)
{
    @Html.ValidationSummary()
}

<input type="submit" value="button2" />
@if (Request["button2"] != null)
{
    @Html.ValidationSummary()
}