Выборочная проверка в MVC - сопоставить новое сообщение с подтвержденным - PullRequest
2 голосов
/ 28 февраля 2011

Я пытаюсь создать новую пользовательскую проверку, в которой я могу сравнить два значения в одном классе.в этом случае проверяется, что, когда люди меняют свою электронную почту, они должны ввести ее дважды, и эти два значения совпадают.(Сделал бы то же самое для добавления / изменения паролей)

    public class CompareAttribute : ValidationAttribute
    {
        public string CompareValue { get; set; }

        public override bool IsValid(string value)
      {
        //we not validating if its required or not!
        if (value == null)
            return true;



        return value.ToLower().Equals(CompareValue.ToLower());
       }
     }

Это мой класс validatattribute выше.Затем я попытался использовать его из моего класса, делая это

[Compare(CompareValue = newEmail, ErrorMessage = "New email and Confirm email do not match")]

, но я получаю сообщение об ошибке newEmail

Ошибка 3 Ссылка на объект требуется для нестатическогополе, метод или свойство 'BensBoxing.Domain.EmailChange.newEmail.get'

весь мой класс - это

public class EmailChange : Entity
{
    [DisplayName("Current Email Address")]
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "Current Email is a required field")]
    [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Valid Email Address is required.")]
    public virtual string currentEmail { get; set; }

    [DisplayName("New Email Address")]
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "New Email is a required field")]
    [EmailInUse(ErrorMessage = "Email is currently in use")]
    [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Valid Email Address is required.")]
    public virtual string newEmail { get; set; }

    [DisplayName("Confirm Email Address")]
    [DataType(DataType.Text)]
    [Required(ErrorMessage = "Confirmed Email is a required field")]
    [Compare(CompareValue = newEmail, ErrorMessage = "New email and Confirm email do not match")]
    [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Valid Email Address is required.")]
    public virtual string confirmEmail { get; set; }

}

1 Ответ

1 голос
/ 19 марта 2011

Существует несколько расширений аннотаций данных, которые вы можете использовать, и многие другие в настоящее время работают над тем, чтобы вам не пришлось, так сказать, заново изобретать колесо.Перейдите по ссылке http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx Все, что вам нужно сделать, это просто использовать Nuget, чтобы добавить расширения в свой проект, и вы готовы использовать встроенные аннотации.ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...