我有两个完全相同的部分视图,但对于@model。MVC3将@model传递给局部视图
@model Project.Models.X
@model Project.Models.Y
我怎么能这种模式类型传递给视图,以便我可以使用两个相同的看法?
我有两个完全相同的部分视图,但对于@model。MVC3将@model传递给局部视图
@model Project.Models.X
@model Project.Models.Y
我怎么能这种模式类型传递给视图,以便我可以使用两个相同的看法?
您可以创建一个传递给View的ViewModel Z. 如果您想传递模型X或Y,只需将它传递给Z,然后将模型Z传递给View。
使这两个类都实现相同的接口,并将接口用作模型。按照Tim的建议:如果可能的话,你也可以从同一个基类继承。虽然这并非总是可行,但使用界面方法大多可能。
大多像gandil:创建一个ViewModel Z,但使用Automapper从Y和X映射。这样可以保持您的UI模型干净和干燥。
不知道这是最好的做法,但你也可以使用HTML.RenderAction打电话给你的控制器,并使其返回与任何你想要的模型PartialViewResult,像这样:
@{Html.RenderAction("MyPartialAction", "MyController", new { someID = 1 });}
和
public PartialViewResult MyPartialAction(int? someID)
{
return PartialView("MyPartial",SomeModel);
}
...或基类。 –