2011-06-21 193 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); 
}