2011-06-21 156 views
8

我有兩個完全相同的部分視圖,但對於@model。MVC3將@model傳遞給局部視圖

@model Project.Models.X

@model Project.Models.Y

我怎麼能這種模式類型傳遞給視圖,以便我可以使用兩個相同的看法?

回答

3

您可以創建一個傳遞給View的ViewModel Z. 如果您想傳遞模型X或Y,只需將它傳遞給Z,然後將模型Z傳遞給View。

2

使這兩個類都實現相同的接口,並將接口用作模型。按照Tim的建議:如果可能的話,你也可以從同一個基類繼承。雖然這並非總是可行,但使用界面方法大多可能。

+1

...或基類。 –

1

大多像gandil:創建一個ViewModel Z,但使用Automapper從Y和X映射。這樣可以保持您的UI模型乾淨和乾燥。

5

不知道這是最好的做法,但你也可以使用HTML.RenderAction打電話給你的控制器,並使其返回與任何你想要的模型PartialViewResult,像這樣:

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

public PartialViewResult MyPartialAction(int? someID) 
{ 
     return PartialView("MyPartial",SomeModel); 
}