Estoy diseñando una vista que compara dos cadenas de contraseñas. Las dos propiedades en una de mis modelos son bastante sencillos:Validación del lado del cliente que no se activa para la entrada de datos de la evaluación CompareAttribute
[Required]
[RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
[StringLength(20, MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New Password")]
public string NewPassword { get; set; }
[Required]
[DataType(DataType.Password)]
[RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
[StringLength(20, MinimumLength = 6)]
[Display(Name = "Confirm Password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
Aquí está mi código de la vista:
<table class="fieldset center" width="400">
<tbody>
<tr>
<th width="150">
@Html.LabelFor(m => m.NewPassword)
</th>
<td>
@Html.PasswordFor(m => m.NewPassword, new { @class = "itext3" })
<br /><br />@Html.ValidationMessageFor(m => m.NewPassword)
</td>
</tr>
<tr>
<th width="150">
@Html.LabelFor(m => m.ConfirmPassword)
</th>
<td>
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "itext3" })
<br /><br />@Html.ValidationMessageFor(m => m.ConfirmPassword)
</td>
</tr>
</tbody>
</table>
Todos los atributos disparar sus mensajes de validación del lado del cliente durante la prueba, a excepción de la CompareAttribute en ConfirmPassword que no se activa hasta que toco el servidor. Sin embargo, en mi controlador el ModelState.IsValid = falso.
He comparado lo que estoy haciendo con la aplicación MVC predeterminada que funciona correctamente. ¿Alguna sugerencia para solucionar problemas y solucionar esto?
Estoy usando MVC 3 RTM.
Eso fue todo. En realidad resolvió dos problemas que estaba teniendo. http://stackoverflow.com/questions/4752877/remote-validation-in-asp-net-mvc-3-how-to-use-additionalfields-in-action-method Si vas allí y añades una respuesta apuntando a esta pregunta, te daré la respuesta allí también. ¡GRACIAS! – beaudetious