DataAnnotation比较两个属性

时间:2014-02-21 10:03:50

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

在允许发布表单之前,有没有办法使用数据注释来比较两个表单字段(例如确认电子邮件地址)是否相同?

例如。正则表达式数据注释可以使用匹配函数来引用ViewModel中的另一个属性吗?

2 个答案:

答案 0 :(得分:44)

使用CompareAttribute

public string EmailAddress {get; set;}

[Compare(nameof(EmailAddress), ErrorMessage = "Emails mismatch")]
public string VerifiedEmailAddress { get; set; }

答案 1 :(得分:14)

作为一个可能的选项自我验证

使用方法验证实现接口 IValidatableObject ,您可以在其中放置验证码。

public class TestModel : IValidatableObject
{
    public string Email{ get; set; }
    public string ConfirmEmail { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Email != ConfirmEmail)
        {
            yield return new ValidationResult("Emails mismatch", new [] { "ConfirmEmail" });
        }
    }
}

请注意:这只是服务器端验证。