web-dev-qa-db-ja.com

2つのプロパティを比較するDataAnnotation

フォームの投稿を許可する前に、データ注釈を使用して2つのフォームフィールドを比較する(たとえば、メールアドレスを確認する)方法は同じですか?

例えば。正規表現データアノテーションは、match関数を使用してViewModelの別のプロパティを参照できますか?

27
Mark

CompareAttribute を使用します

public string EmailAddress {get; set;}

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

1つの可能なオプションとして自己検証

インターフェースを実装しますIValidatableObjectメソッドValidateで、検証コードを配置できます。

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" });
        }
    }
}

注意してください:これはサーバー側の検証のみです。

14
Andrei