Với MVC3, tôi có nên thiết kế các kiểu xem của mình sao cho có mô hình được gắn với khung nhìn (DisplayModel) và một mô hình được đăng lại bộ điều khiển (EditModel) không?Trong MVC3, tôi có phải có các mô hình "chỉnh sửa" riêng biệt so với các mô hình "hiển thị" không?
Để làm rõ, tôi không hỏi về các mô hình dữ liệu so với các mô hình xem - Tôi biết sẽ không tốt nếu ràng buộc các khung nhìn/bộ điều khiển của tôi với các mô hình dữ liệu/tên miền.
Tôi cũng không hỏi về việc chia sẻ một mô hình trên hai chế độ xem riêng biệt, một chế độ xem được sử dụng để hiển thị dữ liệu và chế độ xem khác được sử dụng để chỉnh sửa dữ liệu.
Thay vào đó, tôi hỏi về một chế độ xem được sử dụng để chỉnh sửa dữ liệu và mô hình được ràng buộc với chế độ xem so với mô hình bị ràng buộc với hành động của bộ điều khiển.
Nói cách khác, nếu điều này là quan điểm của tôi:
@model MyApp.Models.CustomerModel
nên điều khiển nhìn hành động của tôi như:
public ActionResult Index(CustomerModel model)
Hoặc:
public ActionResult Index(CustomerEditModel model)
Tại một thời điểm, chúng tôi đã làm việc sau (riêng biệt). Nhưng gần đây, chúng tôi đã bắt đầu làm việc trước đây (được chia sẻ).
Lý do cho sự thay đổi này là vì:
Với MVC3 xác nhận không phô trương, nếu tôi đang sử dụng DataAnnotations trên mô hình của tôi để xác nhận, điều này là cần thiết trong cả hai mô hình nếu chúng được tách ra (trên màn hình mô hình để ánh xạ xác thực phía máy khách và trên mô hình chỉnh sửa để xác thực phía máy chủ).
Khi ứng dụng của chúng tôi trưởng thành, chúng tôi nhận thấy rằng các mô hình hiển thị và chỉnh sửa của chúng tôi giống hệt nhau 95%, ngoại trừ các danh sách chọn trong các kiểu xem của chúng tôi. Bây giờ, chúng tôi đã chuyển các mục này sang một số shared class và chuyển các thông số này qua qua chế độ xem ngay bây giờ.
Nhưng tôi đã nhìn thấy một số cuộc thảo luận khác trỏ đến có mô hình chung cho xem/điều khiển là một ý tưởng tồi, và rằng it violates tách mối quan tâm.
Ai đó có thể giúp tôi hiểu sự cân bằng cho hai cách tiếp cận này không?
câu hỏi hay và tôi đã đấu tranh với bản thân mình. Tôi có trường hợp của cả hai trong ứng dụng lớn cuối cùng tôi phát triển. Khi chúng đi xa nhau, tôi tạo ra một cái riêng biệt, nhưng trong hầu hết các trường hợp chúng giống nhau. – Patricia