2014-02-21 5 views
24

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

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

ответ

38

Используйте CompareAttribute

public string EmailAddress {get; set;} 

[CompareAttribute("EmailAddress", ErrorMessage = "Emails mismatch")] 
public string VerifiedEmailAddress { get; set; } 
+1

in .net core это [Сравнить ("EmailAddress", ErrorMessage = "Неисправности электронной почты")] – kyle

11

Как один вариант possibe самопроверки:

Реализовать интерфейс 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" }); 
     } 
    } 
} 

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