我有两个部分视图,它们完全相同,但是@model不同。
@model Project.Models.X
@model Project.Models.Y
我该如何将此模型类型传递给视图,以便我可以同时使用相同的视图?
我有两个部分视图,它们完全相同,但是@model不同。
@model Project.Models.X
@model Project.Models.Y
我该如何将此模型类型传递给视图,以便我可以同时使用相同的视图?
不确定这是否是最佳实践,但您还可以使用HTML.RenderAction调用您的控制器,并使其返回一个PartialViewResult与您想要的任何模型,如下所示:
@{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });}
并且
public PartialViewResult MyPartialAction(int? someID)
{
return PartialView("MyPartial",SomeModel);
}
您可以创建一个ViewModel Z,将其传递给View。如果要传递模型X或Y,只需将它们传递给Z,然后将模型Z传递给View。
让两个类都实现同一个接口,并将此接口作为你的模型。
正如 Tim 所建议的:如果可能的话,你还可以从相同的基类继承。虽然这不总是可行的,但使用接口方法通常是可行的。
大多数情况下像gandil一样:创建一个ViewModel Z,但使用Automapper从Y和X进行映射。这样你就可以保持你的UI模型干净和DRY。