MVC3将@model传递给局部视图

时间:2011-06-21 13:50:09

标签: asp.net-mvc asp.net-mvc-3 view model partial

我有两个部分视图完全相同,但对于@model。

@model Project.Models.X

@model Project.Models.Y

如何将此模型类型传递给视图,以便我可以对两者使用相同的视图?

4 个答案:

答案 0 :(得分:5)

不确定这是否是最佳做法,但您也可以使用HTML.RenderAction来调用您的控制器并让它返回您想要的任何型号的PartialViewResult,如下所示:

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

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

答案 1 :(得分:3)

您可以创建传递给View的ViewModel Z. 如果要传递模型X或Y,只需将其传递给Z,然后将模型Z传递给View。

答案 2 :(得分:2)

使两个类实现相同的接口,并使用该接口作为模型。

根据蒂姆的建议:如果可能的话,你也可以从同一个基类继承。虽然这并不总是可行,但使用接口方法几乎是可能的。

答案 3 :(得分:1)

大多数情况下像gandil:创建一个ViewModel Z但是使用Automapper从Y和X映射。这样你就可以保持你的UI模型清洁和干燥。