2012-04-15 8 views
1

Я использую следующую модель для управления вводом пользователя и регистрации его. Но если я вводим одни и те же пароли и нажимаю кнопку , появляется сообщение об этом подтверждении пароля.Проблема с подтверждением пароля в MVC3

Я уверен, что модель правильная, потому что она работает на другой странице. В этом случае RegisterModelSecond является членом EventFrontEndViewModel.

Так что, когда я комментирую [Compare("RegisterModel.Password", ErrorMessage = "The password and confirmation password do not match.")], это работает, но никаких подтверждений мне не нужно!

Любой ключ, как его исправить?

public class EventFrontEndViewModel 
    { 
     public Page CurrentPage { set; get; } 

     public List<Event> Events { set; get; } 

     public List<Event> SubscribedEvents { set; get; } 

     public RegisterModelSecond RegisterModel { set; get; } 

     public EventFrontEndViewModel() 
     { 
      CurrentPage = new Page(); 
      Events = new List<Event>(); 
      RegisterModel = new RegisterModelSecond(); 
      SubscribedEvents = new List<Event>(); 
     } 
    } 

Регистрация Модель

public class RegisterModelSecond 
    { 
     [Required] 
     [Display(Name = "User name")] 
     public string UserName { get; set; } 

     [Required] 
     [DataType(DataType.EmailAddress)] 
     [Display(Name = "Email address")] 
     public string Email { get; set; } 

     [Required] 
     [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
     [DataType(DataType.Password)] 
     [Display(Name = "Password")] 
     public string Password { get; set; } 

     [Required] 
     [DataType(DataType.Password)] 
     [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
     [Display(Name = "Confirm password")] 
     [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
     public string ConfirmPassword { get; set; } 
    } 

и HTML

<div class="editor-label"> 
             @Html.LabelFor(m => m.RegisterModel.Password) 
            </div> 
            <div class="editor-field"> 
             @Html.PasswordFor(m => m.RegisterModel.Password) 
             @Html.ValidationMessageFor(m => m.RegisterModel.Password) 
            </div> 
            <div class="clear"> 
            </div> 
            <div class="editor-label"> 
             @Html.LabelFor(m => m.RegisterModel.ConfirmPassword) 
            </div> 
            <div class="editor-field"> 
             @Html.PasswordFor(m => m.RegisterModel.ConfirmPassword) 
             @Html.ValidationMessageFor(m => m.RegisterModel.ConfirmPassword) 
            </div> 
            <div class="clear"> 
            </div> 

ответ

2

я нашел правильный ответ здесь MVC 3 Client-Side Compare Validation

Это ошибка в клиентском сценарии проверки на стороне: jquery.validate. unobtrusive.js

В строке ~ 284 вы найдете это:

element = $(options.form).find(":input[name=" + fullOtherName + "]")[0]; 

Изменить его к этому:

атрибут
element = $(options.form).find(":input[name='" + fullOtherName + "']")[0]; 

Название потребности одиночные кавычки.

Я хочу добавить, если вы используете версию MIN, и ее также нужно изменить.

+1

Спасибо, человек ... совершенно сумасшедшая ошибка ... – kape123

+1

Ух ты .. ты спаси мой день .. Спасибо –

Смежные вопросы