ASP.NET MVC多个字段,其中包含一个验证摘要错误消息

时间:2016-06-23 20:47:04

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

我有一个ASP.NET MVC应用程序,其中包含一个包含多个字段的表单。其中三个字段组合在一起,只需填写其中一个字段。目前使用IValidatableObject.Validate方法编写代码:

if (String.IsNullOrEmpty(Field1) && String.IsNullOrEmpty(Field2) && String.IsNullOrEmpty(Field3))
{
    yield return new ValidationResult("Please fill in one of the fields.",
         new [] { "Field1", "Field2", "Field3" });               
}

问题是它在验证摘要中显示"Please fill in one of the fields."三次,这是不好的。

我看了this post和其他一些基本上建议创建自定义ValidationAttribute的人。我尝试过这样做,但这种方法存在两个问题。

第一个问题是,如果您只按照上面链接中的建议将ValidationAttribute应用于一个字段,它只会在验证摘要中放入一条消息,但它也只会突出显示一个红色字段。其他两个领域仍然正常。如果您使用multiple fields have the attribute的方法,那么您将全部以红色显示,但您也会在验证摘要中收到多条错误消息。

另一个问题是当ValidationAttribute报告错误时,IValidatableObject.Validate方法不再运行。因此,验证摘要仅包含与ValidationAttribute相关的错误消息,即使其他问题仍然存在。

所以基本目标是:

  1. 当所有三个字段都为空白时,所有三个字段都需要以红色突出显示
  2. 验证摘要应仅包含错误消息
  3. IValidatableObject.Validate必须执行
  4. 有什么想法吗?

0 个答案:

没有答案