Атрибут сравнения (пароль)

Я хотел бы создать модель представления для нового пользователя, используя приведенный ниже код. Класс« Пользователь »содержит только два свойства (на данный момент упрощено), которые я буду использовать базы данных; модель представления добавляет поле "пароль сравнения", которое используется только в представлении. Я бы предпочел, чтобы модель представления использовала класс "Пользователь" напрямую, а не повторял все поля, определенные в "Пользователь" ".

Мой вопрос: как правильно указать" User.Password "в атрибуте [Compare] для поля" ComparePassword "?

public class User
{
   [Required]
   public string UserName { get; set; }

   [Required]
   [DisplayName("Password")]
   [DataType(DataType.Password)]
   public string Password { get; set; }
}
public class NewUserViewModel
{
    public User User { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [DisplayName("Re-enter Password")]
    [Compare("Password", ErrorMessage="Passwords must match")]
    public string ComparePassword { get; set; }
}

HTML-код, который создается для" Password "и" ComparePassword ", приведен ниже.

<input class="text-box single-line password" 
  data-val="true" 
  data-val-required="The Password field is required." 
  id="User_Password" 
  name="User.Password" 
  type="password" value="" />

<input class="text-box single-line password" 
  data-val="true" 
  data-val-equalto="Passwords must match" 
  data-val-equalto-other="*.Password"
  data-val-required="The Re-enter Password field is required." 
  id="ComparePassword" 
  name="ComparePassword" 
  type="password" value="" />

Ключ в том, как Javascript обрабатывает « data-val-equalto-other ». Если я использую « Password » или « User_Password «ничего не происходит - проверка не выполняется. Если я использую« User.Password », проверка выполняется, но всегда терпит неудачу.

У меня нет реальных проблем при выполнении этого непосредственно в jQuery, но я бы предпочел использовать то [Сравните] атрибут, если это вообще возможно.

18
задан Kras 25 July 2011 в 15:31
поделиться