2010-10-28 20 views
13

我試着去更新在MVC一個簡單的模型,但它不工作,它拋出一個異常,稱該模型無法更新:ASP.NET MVC的UpdateModel拋出異常:「型號無法更新」

 [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) 
       { 
       [...] 
       } 
       [...] 
     } 

這是模型:

[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; } 
} 

我怎麼可以用這種方法 「的UpdateModel」?

+0

您是否檢查過表單集合中的鍵是否與模型中的屬性匹配? – 2010-10-28 12:39:56

+0

你在用Usuarios usuario做什麼?它只有一個電子郵件地址,你將它排除在外......?!?閱讀我的答案,以解決它:) – Stefanvds 2010-10-28 12:50:00

+0

沒有它的另一個屬性,我只是顯示電子郵件propertie – ozsenegal 2010-10-28 12:56:45

回答

10

也許你的數據與驗證不符。我想試試TryUpdateModel

TryUpdateModel方法與UpdateModel方法相似,只是如果更新的模型狀態無效,TryUpdateModel方法不會引發InvalidOperationException異常。

9

查看您的ModelState條目(可通過this.ModelState訪問)。

ModelState包含每個屬性的條目以及您嘗試綁定的模型中該屬性的錯誤。你有可能在post或get action中傳遞錯誤的數據類型。

+0

THK爲您help.Ive解決UpdateModel從FormCollection或從您的強類型模型傳入參數作爲值。 – ozsenegal 2010-10-28 19:04:25

0

用途:

UpdateModel<UsuariosModel>(userModel); 

我希望這將解決這個問題。