CompareAttribute错误优先于RequiredAttribute 1

时间:2012-04-16 15:16:12

标签: c# asp.net-mvc-3 data-annotations

在询问实际问题之前,我只是想说这是一个要求,我们的客户正在用牙齿和指甲来对抗它,所以有更好的方法来完成 - 这种答案,即使我知道有更好的方法可以做到这一点,在这种情况下无济于事。

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

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

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

当我们测试它时,如果我们在电子邮件字段中输入一个值而不是在EmailConfirmation中输入一个值,我们会得到字段不匹配错误,这很好,但客户绝对想看到“确认字段”是必填的“错误,当它为空时,只有当两个字段都有数据并且它们不匹配时,才能看到”字段不匹配“。

有没有办法用注释来完成这个?

注意:我们正在使用MVC 3。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您始终可以编写自己的自定义验证属性来处理此方案。这是一个不错的article,它提供了一个使用自定义属性处理自定义验证的示例。

答案 1 :(得分:0)

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

 [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class CompareAndValidateAttribute : CompareAttribute
{
    public override bool IsValid(object value)
    {
        return base.IsValid(value) && !string.IsNullOrEmpty((string)value);
    }
}