1

在提出实际问题之前,我只想说这是我们的客户正在用牙齿和指甲来解决这个问题的要求,所以即使我知道有这种答案,也有更好的实现方式在这种情况下,更好的方法将无济于事。

我有一个具有以下定义的视图模型:

public class MyVm
{
   [Required]
   public string Email{get;set;]

   [Required]
   [Compare("Email")]
   public string EmailConfirmation{get;set;
}

当我们测试它时,如果我们在 Email 字段中输入一个值,但没有在 EmailConfirmation 中输入一个值,我们会收到 fields-do-not-match 错误,这很好,但客户绝对希望看到“需要确认字段”当它为空并且只有当两个字段都有数据并且它们不匹配时才会出错,才能看到“字段不匹配”之一。

有没有办法通过注释来实现这一点?

注意:我们使用的是 MVC 3。

谢谢你的帮助。

4

2 回答 2

0

您始终可以编写自己的自定义验证属性来处理这种情况。这是一篇不错的文章,它提供了一个使用自定义属性处理自定义验证的示例。

于 2012-04-16T18:55:46.967 回答
0

也许您可以编写自己的属性。像这样的东西:

 [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class CompareAndValidateAttribute : CompareAttribute
{
    public override bool IsValid(object value)
    {
        return base.IsValid(value) && !string.IsNullOrEmpty((string)value);
    }
}
于 2012-04-16T18:59:32.787 回答