比较属性错误优先于必需属性 1

本文关键字:属性 优先于 错误 比较 | 更新日期: 2023-09-27 18:31:28

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

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

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

当我们测试它时,如果我们在电子邮件字段中输入一个值,而不是在电子邮件确认字段中输入一个值,我们会得到字段不匹配错误,这完全没问题,但客户绝对希望看到"确认字段是必需的"错误,当它为空并且只有当两个字段都有数据并且它们不匹配时, 以查看"字段不匹配"之一。

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

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

感谢您的帮助。

比较属性错误优先于必需属性 1

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

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

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