2009-10-11 27 views
27

Tôi đang tìm một tập hợp các phương pháp hay nhất để sử dụng khi triển khai IModelBinder.Thực tiễn tốt nhất khi triển khai IModelBinder

Tôi đã đọc ba cuốn sách MVC khác nhau và mỗi cuốn sách thực hiện một số nội dung hơi khác nhau trong triển khai của chúng mà không có bất kỳ lời giải thích thực sự nào.

  • Các Hanselman, Haack, Guthrie, Conery cuốn sách thậm chí không đề cập đến IModelBinder
  • Palermo đề nghị mở rộng DefaultModelBinder chứ không phải thực hiện trực tiếp của IModelBinder, nhưng tôi không thực sự xem làm thế nào để tận dụng những lợi ích
  • Sanderson đề cập đến việc cập nhật các mẫu Phiên bản hiện tại, cũng như gọi số ModelState.SetModelValue() để thực hiện theo quy ước.

Tôi chỉ muốn đảm bảo rằng các chất kết dính mô hình của tôi tuân theo các quy ước và tôi hiểu đúng toàn bộ ModelBindingContext.

Bất kỳ mẹo, thủ thuật, hướng dẫn GOOD nào để giới thiệu?

Trả lời

9

K Scott Allen có một số mẹo về Mô hình ràng buộc: http://odetocode.com/blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx.

+0

Bài báo đề cập đến dữ liệu Chú thích vì vậy tôi tự hỏi liệu tôi nên kế thừa từ DataAnnotationsModelBinder để thay thế. Câu trả lời là không. DefaultModelBinder của MVC 2 RTM đã chứa logic từ DataAnnotationsModelBinder. Xem http://stackoverflow.com/questions/2666955/dataannotationsmodelbinder-with-mvc2-rtm/2669207#2669207 –

2

Tôi được kế thừa từ DefaultModelBinder, vì nó tự động liên kết các thuộc tính cơ bản trong thực thể. Tôi đã tăng cường nó, vì vậy nó cũng liên kết các thuộc tính điều hướng. Tài liệu của tôi thực hiện ràng buộc kế thừa trước và sau đó tìm kiếm các giá trị thuộc tính điều hướng bổ sung trong biểu mẫu. Tôi nghĩ rằng cách tiếp cận của bạn nên phụ thuộc vào những gì bạn thực sự muốn làm. Bạn cũng có thể sử dụng phản xạ và xem những gì thực sự đứng đằng sau chất kết dính mặc định. Điều này có thể thuyết phục bạn kế thừa.

0

MVC Futures 2 có hệ thống ràng buộc mô hình mở rộng có thể mở rộng. Bạn có thể tìm hiểu thêm trong tài liệu phát hành tại http://aspnet.codeplex.com/releases/view/41742

Chỉ cần tải "ASP.NET MVC 2 Futures Extensible Mẫu Binder Tài liệu"

1

Một ví dụ sống của IModelBinder có sẵn ở đây. Trong ví dụ này, một chuỗi truy vấn Apache phức tạp đã được bao bọc để truyền các đối tượng đơn giản cho Mô hình.

IModelBinder Thực hiện

Controller

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