2011-06-21 32 views
8

Tôi có hai chế độ xem một phần giống hệt nhau, nhưng đối với @model.Đèo MVC3 @model để xem một phần

@model Project.Models.X

@model Project.Models.Y

Làm thế nào tôi có thể vượt qua loại mô hình này đến xem vì vậy mà tôi có thể sử dụng quan điểm tương tự cho cả hai?

Trả lời

3

Bạn có thể tạo ViewModel Z, được chuyển tới Chế độ xem. Nếu bạn muốn vượt qua mô hình X hoặc Y, chỉ cần chuyển cho Z sau đó vượt qua mô hình Z để xem.

2

Làm cho cả hai lớp thực hiện cùng một giao diện và sử dụng giao diện làm mô hình của bạn.

Theo đề xuất của Tim: Nếu có thể bạn cũng có thể kế thừa từ cùng một lớp cơ sở. Mặc dù điều này không phải lúc nào cũng có thể, bằng cách sử dụng cách tiếp cận giao diện hầu hết là có thể.

+1

... hoặc lớp cơ sở. –

1

Chủ yếu như gàu: Tạo ViewModel Z nhưng sử dụng Automapper để ánh xạ từ Y và X. Bằng cách đó bạn có thể giữ cho các mô hình giao diện người dùng của bạn sạch và khô.

5

Không chắc nếu điều này là thực hành tốt nhất, nhưng bạn cũng có thể sử dụng HTML.RenderAction gọi điều khiển của bạn và có nó trả về một PartialViewResult với bất cứ mô hình mà bạn muốn, như vậy:

@{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });} 

public PartialViewResult MyPartialAction(int? someID) 
{ 
     return PartialView("MyPartial",SomeModel); 
} 
Các vấn đề liên quan