2010-10-28 15 views
13

Im tratando de actualizar un modelo simple en el MVC, pero no su trabajo, se produce una excepción diciendo que el modelo no pudo ser actualizado:ASP.NET MVC UpdateModel lanza una excepción: "El modelo no pudo ser actualizado"

 [HttpPost] 
     public ActionResult SignIn([Bind(Exclude="TxtEmail")]Usuarios usuario,FormCollection fc) 
     { 
      try 
      { 
       UsuariosModel userModel = new UsuariosModel(usuario); 
       userModel.Usuarios.TxtEmail = "[email protected]"; 

       UpdateModel(userModel); 

       if (ModelState.IsValid) 
       { 
       [...] 
       } 
       [...] 
     } 

este es el modelo:

[Required(ErrorMessage="**O email é requerido")] 
[RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$",ErrorMessage="**Email Inválido")] 
public string TxtEmail 
{ 
    get { return this.txt_email; } 
    set { this.txt_email = value; } 
} 

¿Cómo puedo utilizar este método "UpdateModel"?

+0

¿Ha comprobado que las claves de la colección de formularios coinciden con las propiedades del modelo? –

+0

¿qué haces con usuarios usuario? solo tiene una dirección de correo electrónico y la está excluyendo ...?!? lea mi respuesta para solucionarlo :) – Stefanvds

+0

no tiene otras propiedades, solo muestro propiedades de correo electrónico – ozsenegal

Respuesta

10

Quizás sus datos no coincidan con la validación.

Lo intentaría TryUpdateModel.

El método TryUpdateModel es como el método UpdateModel excepto que el método TryUpdateModel no produce una excepción InvalidOperationException si el estado de actualización del modelo no es válido.

9

Mire en sus entradas de ModelState (accesible con this.ModelState).

ModelState contiene una entrada para cada propiedad y los errores para esa propiedad en el modelo que está intentando vincular. Lo más probable es que estés pasando el tipo de datos incorrecto a lo largo de la publicación o actúes.

+0

Gracias por su ayuda. He descubierto que UpdateModel toma valores de FormCollection o de su Modelo de tipo fuerte pasado como parámetro. – ozsenegal

0

Uso:

UpdateModel<UsuariosModel>(userModel); 

espero que esto va a resolver el problema.

Cuestiones relacionadas