Я хотел бы создать модель представления для нового пользователя, используя приведенный ниже код. Класс« Пользователь »содержит только два свойства (на данный момент упрощено), которые я буду использовать базы данных; модель представления добавляет поле "пароль сравнения", которое используется только в представлении. Я бы предпочел, чтобы модель представления использовала класс "Пользователь" напрямую, а не повторял все поля, определенные в "Пользователь" ".
Мой вопрос: как правильно указать" 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, но я бы предпочел использовать то [Сравните] атрибут, если это вообще возможно.