Đâ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ña</label>
<input class="text-box single-line password" data-val="true" data-val-length="Su Contrase&#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&#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ña</label>
<input class="text-box single-line password" data-val="true" data-val-equalto="Sus contrase&#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>
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? –