Использование DataAnnotations для сравнения двух свойств модели

Как мне написать собственный атрибут ValidationAttribute, который сравнивает два поля? Это обычный сценарий «введите пароль» и «подтвердите пароль». Мне нужно убедиться, что эти два поля равны, и для обеспечения согласованности я хочу реализовать проверку с помощью DataAnnotations.

Итак, в псевдокоде я ищу способ реализовать что-то вроде следующего:

public class SignUpModel
{
    [Required]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Required]
    [Display(Name = "Re-type Password")]
    [Compare(CompareField = Password, ErrorMessage = "Passwords do not match")]
    public string PasswordConfirm { get; set; }
}

public class CompareAttribute : ValidationAttribute
{
    public CompareAttribute(object propertyToCompare)
    {
        // ??
    }

    public override bool IsValid(object value)
    {
        // ??
    }
}

] Итак, вопрос в том, как мне закодировать [Сравнить] ValidationAttribute?

38
задан Scott 9 February 2011 в 14:19
поделиться