Estoy tratando de validar a un usuario cambiar su contraseña. La clase PasswordChange que toma esta acción tiene 4 propiedades. uno de los cuales es la contraseña de base de datos que se compara con una propiedad "Contraseña actual" que garantiza que el usuario solo puede cambiar su contraseña si conoce su contraseña actual (procedimiento normal en sitios web)Re-evaluar la propiedad de ModelState.IsValid
Problema que tengo es que la contraseña de la base de datos es solo conjunto (como se muestra) dentro de la ActionResult pero el ModelState parece ser llamado antes de que esto por lo que devuelve false en "IsValid" ya que considera que la contraseña de base de datos como "NULO", incluso después de la contraseña de la base de datos se establece
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ChangePassword(PasswordChange model)
{
var User = GetPlayer().User;
model.databasePassword = User.Password;
if (ModelState.IsValid)
{
//update the users password
User.Updated = SystemDate.Current();
User.Password = model.newPassword.ToLower();
return Redirect("/Player");
}
else
{
return View(model);
}
}
Cómo ¿Puedo reevaluarlo o hacer que lo evalúe cuando lo desee?
que es más o menos lo que PasswordChange es. Es más o menos un modelo de vista que tiene 4 propiedades. 3 desde la página que se configuró desde la base de datos en la página de publicación ... ¡esto no resuelve el problema de obtener el modelo de estado para validar después! – Steve
Bien, pregunta tonta, pero ¿por qué databasePassword necesita ser una propiedad modelo si CurrentPassword es? –
Realmente no es un modelo de la vista si agrega cosas después de que se ha pasado de la vista. Es por eso que pregunto por qué es necesaria la contraseña de base de datos en PasswordChange. –