Tôi đã nghiên cứu cấu trúc dự án asp.net MVC cho một dự án mới và có một câu hỏi về một cái gì đó gây nhầm lẫn cho tôi. Sự khác biệt giữa mô hình và mô hình xem là gì? Tôi có đúng khi nói rằng các mô hình xem bao gồm các mô hình trong các thuộc tính biểu mẫu?sự khác biệt giữa các mô hình và mô hình xem
Trả lời
Tôi đã một blog mà tôi muốn hiển thị danh sách các tất cả bài viết, ý kiến mới nhất, loại bài trong một cái nhìn duy nhất. Làm thế nào tôi có thể làm điều đó? Tôi có thể đánh mạnh tầm nhìn của mình vào bất kỳ mô hình nào đúng không? Có kiểu xem.
Tôi đã tạo mô hình chế độ xem được gọi là BlogViewModel
chứa các bài đăng mới nhất, nhận xét mới nhất và các nội dung khác làm thuộc tính và tôi ràng buộc chế độ xem của tôi với mô hình này. posts
, comments
.. là mô hình miền trong khi BlogViewModel
là kiểu xem Tôi đã tạo đặc biệt cho chế độ xem.
Ngày mai tôi sẽ hiển thị blog của mình trong phiên bản dành cho thiết bị di động và tại thời điểm đó, tôi có thể tạo mô hình chế độ xem đơn giản chỉ chứa ít thuộc tính hơn. Cuối cùng .. xem các mô hình dành cho lượt xem và hầu hết các lần chúng hoạt động như trình bao bọc trên các mô hình miền thực!
ViewModel
là phiên bản của Mô hình từ các lớp miền doanh nghiệp được điều chỉnh cho Chế độ xem cụ thể.
Chỉ có Thuộc tính có liên quan đến chế độ xem và không nên có phương pháp (trừ các phương thức đơn giản như ToString()
).
ViewModel
chỉ là "vùng chứa dữ liệu".
Mô hình đơn giản là đại diện cho một đối tượng trong ứng dụng của bạn. Tuy nhiên, có một vài loại mô hình khác nhau mà bạn nên biết.
Mô hình miền: Biểu thị đối tượng miền trong ứng dụng của bạn, như bảng SQL nếu bạn đang sử dụng ORM (Linq2SQL, EF).
Xem mẫu: Đây là một đối tượng mà bạn muốn người dùng cuối xem/chỉnh sửa/v.v. Mô hình chế độ xem có thể chứa các thuộc tính từ một vài hoặc không có mô hình tên miền và thường loại trừ các thuộc tính mà người dùng cuối của bạn không được mút. Xem mô hình chỉ nên chứa các yếu tố cần thiết để hiển thị dữ liệu thích hợp cho người dùng cuối cho một yêu cầu cụ thể.
Here is some Jimmy Bogard cho bạn về Mô hình xem và cách sử dụng chúng.
Mô hình thường liên quan chặt chẽ hơn đến cách dữ liệu của bạn được lưu trữ (cơ sở dữ liệu, dịch vụ, v.v.) và mô hình sẽ giống với mô hình đó.
Mặt khác, ViewModel có liên quan chặt chẽ đến cách dữ liệu của bạn được trình bày cho người dùng. Nó thường là một phiên bản phẳng của mô hình của bạn, không chuẩn hóa, vv Nó có thể là tập hợp của nhiều mô hình.
Đối điển hình Person
đối tượng của bạn, mô hình của bạn có thể chứa các thuộc tính như sau:
- FirstName
- LastName
- sinh
Tuy nhiên, trong bạn ViewModel bạn có thể chọn để đại diện cho nó khác và có một cái gì đó giống như:
- FullName
- Tuổi
Tôi sẽ thêm rằng một đối tượng Mô hình phải đại diện cho cấu trúc ngữ nghĩa/khái niệm của một đối tượng, các thuộc tính và hành vi nội tại/tự nhiên của nó, không quá nhiều cách nó được lưu trữ thực sự. Lưu trữ phải tuân theo các chi tiết thực hiện, không phải là đặc điểm thực tế của đối tượng. – heltonbiker
@heltonbiker, đó là một điểm tuyệt vời. Tôi nghĩ rằng có rất nhiều mô hình, ViewModels, Business Logic Models, mô hình lưu trữ dữ liệu, vv Chúng tôi thường đấu tranh vì chúng tôi không nắm lấy sự khác biệt của mỗi người trong số họ và thay vào đó tập trung vào sự tương đồng của họ. Tôi có thể chỉ viết một bài đăng blog về điều đó sớm thôi;) –
dường như với tôi rằng MODELING bị bỏ quên nhiều nhất trong số các hoạt động phát triển quan trọng nhất (tốt, ít nhất là ở hầu hết các nơi tôi biết ...) – heltonbiker
- 1. Sự khác biệt giữa: mô hình và @model trong form_for?
- 2. sự khác biệt giữa mô hình và mock_model trong RSpec
- 3. Sự khác nhau giữa mô hình dữ liệu và mô hình đối tượng là gì?
- 4. Làm cách nào để duy trì sự nhất quán giữa mô hình và mô hình xem trong mô hình MVVM?
- 5. Làm cách nào để xác định sự khác biệt giữa mô hình kinh doanh và mô hình dữ liệu?
- 6. Sự khác nhau giữa mô hình miền và mô hình khái niệm
- 7. Sự khác biệt giữa các mô hình hộp CSS và Latex là gì?
- 8. Sự khác biệt giữa GET và LỌC trong lớp mô hình Django
- 9. sự khác biệt giữa mô hình khách truy cập và chiến lược là gì?
- 10. cakephp - sự khác biệt giữa mô hình và hành vi là gì?
- 11. Java: Sự khác biệt giữa các tiêu chuẩn vĩ mô và vi mô
- 12. Mô hình liên kết và xem mô hình Silverlight MVVM
- 13. Sự khác biệt giữa giàn giáo và mô hình trong Rails
- 14. Sự khác biệt giữa ". +" Và ". +?"
- 15. sự khác biệt giữa mô hình chế độ xem và đối tượng truyền dữ liệu là gì?
- 16. Sự khác biệt giữa mô hình kế thừa nhiều bảng và mối quan hệ một-một giữa hai mô hình giống nhau là gì?
- 17. Sự khác nhau giữa Mô hình đối tượng trình duyệt và Mô hình đối tượng tài liệu là gì?
- 18. Mô hình ZF2 được chia sẻ giữa các Mô-đun
- 19. DAO mô hình và các đối tượng mô hình
- 20. sự khác biệt giữa Mô phỏng và Mô phỏng là gì?
- 21. sự khác biệt giữa độ sâu hình ảnh và kênh
- 22. Sự khác biệt giữa màn hình và khóa?
- 23. Sự khác biệt chính (ưu/nhược điểm) giữa mô hình ember, ember-restless, và emu là gì?
- 24. Sự khác biệt giữa nút hình ảnh và nút
- 25. Sự khác biệt giữa Hình ảnh và BufferedImage trong Java
- 26. Tại sao có hai lớp học, xem mô hình và mô hình miền?
- 27. Tính toán sự khác biệt giữa các hình ảnh
- 28. Sự kiện và mô hình mẫu mô-đun Javascript
- 29. Mô hình CakePHP có "Giữa các ngày"
- 30. Sự khác nhau giữa đối tượng Mô hình MVC, đối tượng tên miền và DTO
Bạn có thể đã googled. Bản thân SO có rất nhiều câu hỏi reg. chủ đề này. – VJAI
Câu hỏi SO này- http://stackoverflow.com/questions/4061440/asp-net-mvc-model-vs-viewmodel, hoàn toàn trả lời câu hỏi này. – Bibhu