这篇文章讨论了同样的问题: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()
帮助程序时,验证结果会在所有表单中传播,尽管事实上我只发布了一个:
这是正常行为吗?或者我错过了代码中的某些内容?
答案 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()
}