如何在自定义MVC验证中抑制重复的验证错误消息

时间:2011-11-23 13:41:58

标签: asp.net-mvc asp.net-mvc-3

我创建了具有自定义验证功能的人员模型,以确保用户输入此人的姓名。问题是名称由几个字段组成,我只需要至少完成一个字段。

这是我的验证码:

if (string.IsNullOrWhiteSpace(this.Title) && 
    string.IsNullOrWhiteSpace(this.Initals) &&
    string.IsNullOrWhiteSpace(this.Forename) && 
    string.IsNullOrWhiteSpace(this.Surname) && 
    string.IsNullOrWhiteSpace(this.Company))
    yield return new ValidationResult("You must enter a name or company name.", 
        new string[] { "Title", "Initals", "Forename", "Surname", "Company" });

我希望看到一条错误消息,突出显示5个字段,但是我收到5条错误消息,突出显示5个字段。我只使用@ Html.ValidationSummary()显示错误消息。

如何抑制4条额外消息,并仍然突出显示问题的5个字段。

1 个答案:

答案 0 :(得分:3)

一些快速解决方案:

1)在验证码中设置2 ValidationResult:

...
yield return new ValidationResult("You must enter a name or company name.");
yield return new ValidationResult("any text",
    new string[] { "Title", "Initals", "Forename", "Surname", "Company" });

2)在视图中排除摘要中的属性验证消息:

@model SomeModel
...
@Html.ValidationSummary(true)
...

因此,您将获得单个消息并突出显示输入。