【问题标题】:MVC3 pass @model to partial viewMVC3 将 @model 传递给局部视图
【发布时间】: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


    【解决方案1】:

    不确定这是否是最佳实践,但您也可以使用 HTML.RenderAction 来调用您的控制器并让它返回带有您想要的任何模型的 PartialViewResult,如下所示:

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

    和

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

    【讨论】:

      【解决方案2】:

      与 gandil 最相似:创建一个 ViewModel Z,但使用 Automapper 从 Y 和 X 映射。这样您可以保持 UI 模型干净和干燥。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          让两个类实现相同的接口,并使用该接口作为你的模型。

          正如 Tim 所建议的:如果可能,您也可以从同一个基类继承。虽然这并不总是可行的,但使用接口方法大部分是可能的。

          【讨论】:

            猜你喜欢
            • 2013-12-19
            • 1970-01-01
            • 1970-01-01
            • 2019-02-01
            • 2011-10-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多