MVC3如何将@model传递给部分视图

8

我有两个部分视图,它们完全相同,但是@model不同。

@model Project.Models.X

@model Project.Models.Y

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

4个回答

5

不确定这是否是最佳实践,但您还可以使用HTML.RenderAction调用您的控制器,并使其返回一个PartialViewResult与您想要的任何模型,如下所示:

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

并且

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

3

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


2

让两个类都实现同一个接口,并将此接口作为你的模型。

正如 Tim 所建议的:如果可能的话,你还可以从相同的基类继承。虽然这不总是可行的,但使用接口方法通常是可行的。


1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接