DataAnnotation比较两个属性

问题描述 投票:27回答:2

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

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

c# .net asp.net-mvc asp.net-mvc-4 data-annotations
2个回答
44
投票

使用CompareAttribute

public string EmailAddress {get; set;}

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

14
投票

作为一种可能的选择自我验证:

使用方法Validate实现接口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" });
        }
    }
}

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

© www.soinside.com 2019 - 2024. All rights reserved.