Подтвердить что ты не робот

DataAnnotation для сравнения двух свойств

Можно ли использовать аннотации данных для сравнения двух полей формы (например, для подтверждения адреса электронной почты), до того, как разрешить публикацию формы?

например. может ли аннотация для данных регулярного выражения использовать функцию соответствия для ссылки на другое свойство в ViewModel?

4b9b3361

Ответ 1

Используйте атрибут CompareAttribute

public string EmailAddress {get; set;}

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

Ответ 2

В качестве одного из возможных вариантов самооценки:

Внедрите интерфейс 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" });
        }
    }
}

Обратите внимание: это только проверка на стороне сервера.