public ActionResult CambiarContrasena(UsuarioActualMVC usuarioActual, [Bind(Prefix = "CambioDeContrasenaVM")] CuentaDeUsuarioCambiarContraseñaViewModel modelo) { var resultado = new ResultadoLLamadoAjax(); if (ModelState.IsValid) { try { IPasswordHasher passwordHasher = null; IdentityResult validador = null; if (!Convertidor.ContraseñaValida(modelo.ContrasenaNueva, out passwordHasher, out validador)) { throw new ContraseñaInvalidaException(string.Join(",", validador.Errors)); } var passwordHash = passwordHasher.HashPassword(modelo.ContrasenaNueva); UnidadDeTrabajo.UsuarioRepositorio.CambiarPasswordHashPorIdUsuario(usuarioActual.UsuarioId, passwordHash); resultado.LLamadoExitoso = true; } catch (ContraseñaInvalidaException ex) { //ModelState.AddModelError("Contraseña", "La contraseña no es lo suficientemente segura. Por favor ingrese una contraseña de mayor complejidad"); var mensajeDeError = new CamposInvalidos() { NombreDelCampo = "CambioDeContrasenaVM.ContrasenaNueva", MensajeDeError = "La contraseña no es lo suficientemente segura. Por favor ingrese una contraseña de mayor complejidad" }; resultado.CamposInvalidos.Add(mensajeDeError); } catch (Exception ex) { resultado.MensajeDeErrorGeneral = "Ocurrio Un error"; } return(Json(resultado)); } else { resultado.CamposInvalidos = ErroresDelModeloComoCamposInvalidos; return(Json(resultado)); } }