2010-10-28 30 views
13

Im cố gắng cập nhật một mô hình đơn giản trong MVC, nhưng nó không làm việc, nó ném một ngoại lệ nói rằng mô hình không thể được cập nhật:ASP.NET MVC UpdateModel ném ngoại lệ: "Mô hình không thể được cập nhật"

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

Đây là mô hình:

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

Làm thế nào tôi có thể sử dụng phương pháp này "UpdateModel"?

+0

Bạn đã kiểm tra xem các phím trong bộ sưu tập biểu mẫu có khớp với các thuộc tính trong mô hình không? –

+0

bạn đang làm gì với Usuarios usuario ?? nó chỉ có một địa chỉ email và bạn đang loại trừ nó ...?!? đọc câu trả lời của tôi để sửa chữa nó :) – Stefanvds

+0

không có nó có một tài sản, tôi chỉ hiển thị email propertie – ozsenegal

Trả lời

10

Có thể dữ liệu của bạn không khớp với xác thực.

Tôi sẽ thử TryUpdateModel.

Phương thức TryUpdateModel giống như phương pháp UpdateModel ngoại trừ phương thức TryUpdateModel không ném ngoại lệ InvalidOperationException nếu trạng thái mô hình cập nhật không hợp lệ.

9

Tìm các mục nhập ModelState của bạn (có thể truy cập với this.ModelState).

ModelState chứa mục nhập cho mỗi thuộc tính và lỗi cho thuộc tính đó trong mô hình bạn đang cố gắng ràng buộc. Rất có thể là bạn đang đi sai datatype cùng trong bài viết hoặc nhận được hành động.

+0

thk cho sự giúp đỡ của bạn.Tôi tìm ra rằng UpdateModel có giá trị từ FormCollection hoặc từ Strong-Typed Model của bạn thông qua như tham số. – ozsenegal

0

Sử dụng:

UpdateModel<UsuariosModel>(userModel); 

Tôi hy vọng điều này sẽ giải quyết vấn đề.

Các vấn đề liên quan