Buh*_*ica 3 asp.net-mvc validationsummary
如果两个文本框一次验证失败,则ValidationSummary会两次显示相同的消息.
难道我做错了什么?或者是否有一个设置我可以更改以隐藏重复的消息?
我把它分解为最简单的例子:
视图:
@model MyModel
@Html.ValidationSummary()
@Html.TextBoxFor(model => model.A)
@Html.TextBoxFor(model => model.B)
Run Code Online (Sandbox Code Playgroud)
模型:
public class MyModel : IValidatableObject
{
public int A { get; set; }
public int B { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//Some logic goes here.
yield return new ValidationResult("Validation failed", new[] { "A", "B" });
}
}
Run Code Online (Sandbox Code Playgroud)
结果:

从ValidationSummary的角度来看,它们并不重复 - 您要将模型状态错误分配给字段A和B,因此验证摘要中必定存在2个错误.它并不"知道"它们是相同的.
简易解决方案
更难解决的问题:
编辑:
像这样的东西,例如:
public static class ValidationExtensions
{
public static MvcHtmlString FilteredValidationSummary(this HtmlHelper html)
{
// do some filtering on html.ViewData.ModelState
return System.Web.Mvc.Html.ValidationExtensions.ValidationSummary(html);
}
}
Run Code Online (Sandbox Code Playgroud)