2009-03-25 32 views
5

Tôi có thiếu thứ gì đó cơ bản cho các hiệu trưởng của MVC hay tôi phát điên?Sử dụng hai mô hình được đánh máy mạnh mẽ cho một chế độ xem MVC

Nếu tôi có chế độ xem hiển thị danh sách sách và danh sách tác giả, tôi phải tạo lớp có danh sách Sách và danh sách tác giả làm thuộc tính. Đúng?

Sau đó, tôi sẽ mạnh mẽ nhập chế độ xem để sử dụng lớp này.

Bây giờ tôi muốn tạo một trang mới có cùng danh sách nhưng cũng có danh sách các chương trình khuyến mãi. Tôi có cần phải tạo một lớp học khác với danh sách tài sản Sách, danh sách tài sản tác giả và danh sách tài sản khuyến mãi không?

Nếu tôi tạo lớp học cho tất cả các chế độ xem, tôi đang tạo ra rất nhiều công việc phụ. Tôi có phải tạo ra partials mạnh mẽ cho từng loại? Điều gì sẽ xảy ra nếu bố cục khác nhau mỗi lần?

Hiện tại tôi có lớp BaseViewData được tất cả các chế độ xem sử dụng vì nó chứa một số thuộc tính phổ biến. Tuy nhiên, bây giờ tôi đang đấu tranh để có được các vật phẩm khác mà không hoàn toàn cồng kềnh lớp BaseViewData.

Xin vui lòng ai đó có thể giúp tôi hiểu lý thuyết rằng tất cả các ví dụ đơn giản không bao gồm.

Trả lời

3

tôi sử dụng ViewData extension methods từ MvcContrib mà thêm hỗ trợ cho nhiều mạnh mẽ mô hình đã nhập (miễn là chúng là các loại khác nhau). Mã để thêm chúng vào ViewData trông như thế này:

User currentUser = GetCurrentUser(); 
List<Project> projectList = projectRepository.GetRecentProjects(currentUser); 
ViewData.Add(user); 
ViewData.Add(projectList); 

Mã trong giao diện để kéo chúng ra trông như thế này:

User user = ViewData.Get<User>(); 
List<Project> projectList = ViewData.Get<List<Project>>(); 

này loại bỏ cả "dây ma thuật" và loại đúc. Lưu ý, điều này không làm bất kỳ điều gì với Thuộc tính mô hình của chế độ xem.

+0

Bạn có phải nhập các biến trong chế độ xem không? Tôi nghĩ rằng xem được cho là chỉ hiển thị mã hoặc tôi chỉ là quá pedantic? –

0

Tôi đã gặp sự cố tương tự. Tôi nghĩ giải pháp chung cho hầu hết mọi người là tạo một lớp chứa chứa các mô hình Sách và Tác giả mà bạn thực sự muốn, và chuyển vùng chứa đó cho Chế độ xem của bạn.

Tối ưu phụ, có, nhưng nó hoạt động. Hy vọng rằng điều này sẽ được giải quyết trong các phiên bản tương lai của khuôn khổ.

1

Tạo ONE lớp container cho từng đối tượng trong hệ thống của bạn, và sử dụng cho tất cả các quan điểm - đơn giản

Đối tượng với giá trị null không có chi phí thực

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