2011-08-17 33 views
5

Đây là lý do tại sao. Đây là HTML được tạo:So sánh trình xác nhận luôn kích hoạt ngay cả khi mật khẩu giống nhau

<div> 
     <label for="RegisterModel_Password">Contrase&#241;a</label> 
     <input class="text-box single-line password" data-val="true" data-val-length="Su Contrase&amp;#241;a debe tener al menos 6 caracteres." data-val-length-max="100" data-val-length-min="6" data-val-required="Debe escribir su contrase&amp;#241;a" id="RegisterModel_Password" name="RegisterModel.Password" type="password" value="" /> 
     <span class="field-validation-valid" data-valmsg-for="RegisterModel.Password" data-valmsg-replace="true"></span> 

    </div> 

    <div> 
     <label for="RegisterModel_ConfirmPassword">Confirme Su Contrase&#241;a</label> 
     <input class="text-box single-line password" data-val="true" data-val-equalto="Sus contrase&amp;#241;as no son las mismas." data-val-equalto-other="*.Password" id="RegisterModel_ConfirmPassword" name="RegisterModel.ConfirmPassword" type="password" value="" /> 
     <span class="field-validation-valid" data-valmsg-for="RegisterModel.ConfirmPassword" data-valmsg-replace="true"></span> 
    </div> 

Thông báo này, trong hộp mật khẩu xác nhận:

data-val-equalto-other="*.Password" 

này nên RegisterModel.Password, như tôi đoán javascript trông giống như đầu vào với cái tên "RegisterModel .Password ", không?

Đây là mã mô hình của tôi:

[Required(ErrorMessage = "Debe escribir su contraseña")] 
[StringLength(100, ErrorMessage = "Su {0} debe tener al menos {2} caracteres.", MinimumLength = 6)] 
[DataType(DataType.Password)] 
[Display(Name = "Contraseña")] 
public string Password { get; set; } 

[DataType(DataType.Password)] 
[Display(Name = "Confirme Su Contraseña")] 
[Compare("Password", ErrorMessage = "Sus contraseñas no son las mismas.")] 
public string ConfirmPassword { get; set; } 

Bất kỳ ý tưởng về lý do tại sao điều này xảy ra?


Chỉ cần tạo ra một thương hiệu ứng dụng MVC3 mới và đây là mô hình:

[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; } 

[DataType(DataType.Password)] 
[Display(Name = "Confirm password")] 
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
public string ConfirmPassword { get; set; } 

Và xác nhận hoạt động. Sự khác biệt duy nhất ở đây là họ đang sử dụng mô hình trực tiếp trong chế độ xem, trong khi tôi chuyển qua * Xem * Mô hình chứa RegisterModel đó.

HTML vỡ nợ làm việc này là khác nhau để khai thác mặc dù:

 <div class="editor-field"> 
      <input data-val="true" data-val-length="The Password must be at least 6 characters long." data-val-length-max="100" data-val-length-min="6" data-val-required="The Password field is required." id="Password" name="Password" type="password" /> 
      <span class="field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> 
     </div> 

     <div class="editor-label"> 
      <label for="ConfirmPassword">Confirm password</label> 
     </div> 
     <div class="editor-field"> 
      <input data-val="true" data-val-equalto="The password and confirmation password do not match." data-val-equalto-other="*.Password" id="ConfirmPassword" name="ConfirmPassword" type="password" /> 
      <span class="field-validation-valid" data-valmsg-for="ConfirmPassword" data-valmsg-replace="true"></span> 
     </div> 
+0

Chỉ cần khẳng định rằng điều này gây ra bởi những gì tôi nghi ngờ.Tôi di chuyển tất cả mọi thứ vào một mô hình duy nhất thay vì một ViewModel (như tôi chính xác nên), các jQuery xác nhận lib không công việc của nó một cách chính xác. Tôi tự hỏi nếu đây là một lỗi? –

Trả lời

2

Xin chào Tôi đã cùng một vấn đề hơn bạn. Điều này xảy ra vì có lỗi trên tệp javascript thực hiện xác thực. Đây là sửa chữa bạn phải thực hiện.

http://forums.asp.net/t/1716181.aspx/1

Nó không phải là khó để tìm thấy trong phiên bản hạn chế tối đa, đó là những gì tôi đã phải thay đổi.

Saludos!

0

Tôi gặp vấn đề tương tự và câu trả lời ở trên không khắc phục được sự cố cho tôi. Điều gì đã sửa chữa nó là đảm bảo rằng tôi đã áp dụng [Required] và [StringLength (.....] Atrributes giống hệt với cả mật khẩu và xác nhận trường mật khẩu. Tôi cũng phải áp dụng thuộc tính Compare cho trường Password, không phải là ConfirmPassword lĩnh vực.

Như vậy, với mô hình trên,

[Required(ErrorMessage = "Debe escribir su contraseña")] 
[StringLength(100, ErrorMessage = "Su {0} debe tener al menos {2} caracteres.", MinimumLength = 6)] 
[DataType(DataType.Password)] 
[Display(Name = "Contraseña")] 
public string Password { get; set; } 

[DataType(DataType.Password)] 
[Display(Name = "Confirme Su Contraseña")] 
[Compare("Password", ErrorMessage = "Sus contraseñas no son las mismas.")] 
public string ConfirmPassword { get; set; } 

trở thành

[Required(ErrorMessage = "Debe escribir su contraseña")] 
[StringLength(100, ErrorMessage = "Su {0} debe tener al menos {2} caracteres.", MinimumLength = 6)] 
[DataType(DataType.Password)] 
[Display(Name = "Contraseña")] 
[Compare("ConfirmPassword", ErrorMessage = "Sus contraseñas no son las mismas.")] 
public string Password { get; set; } 

[Required(ErrorMessage = "Debe escribir su contraseña")] 
[StringLength(100, ErrorMessage = "Su {0} debe tener al menos {2} caracteres.", MinimumLength = 6)] 
[DataType(DataType.Password)] 
[Display(Name = "Confirme Su Contraseña")] 
public string ConfirmPassword { get; set; } 
0

Thay vì sử dụng

@Html.PasswordFor(m => m.RegisterModel.RegisterConfirmPassword) 
.210

mà kết quả đầu ra

<input data-val="true" data-val-equalto="The password and confirmation password do not match." data-val-equalto-other="RegisterModel.RegisterPassword" id="RegisterModel_RegisterConfirmPassword" name="RegisterModel.RegisterConfirmPassword" type="password"> 

tôi lấy đầu ra của các bên trên và thêm dấu nháy đơn xung quanh "'RegisterModel.RegisterPassword"

<input data-val="true" data-val-equalto="The password and confirmation password do not match." data-val-equalto-other="'RegisterModel.RegisterPassword'" id="RegisterModel_RegisterConfirmPassword" name="RegisterModel.RegisterConfirmPassword" type="password"> 
Các vấn đề liên quan