我有两个部分视图完全相同,但对于@model。
@model Project.Models.X
@model Project.Models.Y
如何将此模型类型传递给视图,以便我可以对两者使用相同的视图?
答案 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模型清洁和干燥。