【发布时间】:2011-09-19 13:29:11
【问题描述】:
我有两个完全相同的局部视图,但对于@model。
@model Project.Models.X
@model Project.Models.Y
如何将此模型类型传递给视图,以便我可以为两者使用相同的视图?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 view model partial
我有两个完全相同的局部视图,但对于@model。
@model Project.Models.X
@model Project.Models.Y
如何将此模型类型传递给视图,以便我可以为两者使用相同的视图?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 view model partial
不确定这是否是最佳实践,但您也可以使用 HTML.RenderAction 来调用您的控制器并让它返回带有您想要的任何模型的 PartialViewResult,如下所示:
@{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });}
和
public PartialViewResult MyPartialAction(int? someID)
{
return PartialView("MyPartial",SomeModel);
}
【讨论】:
与 gandil 最相似:创建一个 ViewModel Z,但使用 Automapper 从 Y 和 X 映射。这样您可以保持 UI 模型干净和干燥。
【讨论】:
您可以创建一个 ViewModel Z,将其传递给 View。 如果您想传递模型 X 或 Y,只需将其传递给 Z,然后将模型 Z 传递给 View。
【讨论】:
让两个类实现相同的接口,并使用该接口作为你的模型。
正如 Tim 所建议的:如果可能,您也可以从同一个基类继承。虽然这并不总是可行的,但使用接口方法大部分是可能的。
【讨论】: