【问题标题】:Pattern of sending multiple objects to the View in ASP.NET MVCASP.NET MVC 中向视图发送多个对象的模式
【发布时间】:2010-01-31 01:10:14
【问题描述】:

我正在 ASP.NET MVC 中做我的第一个项目,并使用 ScottGu 的 book 中的 NerdDinner 示例项目作为指导。在他的项目中,他所有的强类型视图都整齐地对应于他定义的对象(例如晚餐)。这不是业务应用程序的真正现实。

例如,在我的应用程序中,一个页面(例如视图)从创建强类型视图的主要对象中获取大部分信息。但它还必须显示来自其他十几个对象的信息。

那么,将所有这些信息传递到视图中的首选模式是什么?

  • 我是否通过模型传递主要对象,并通过 ViewData 传递其余信息?
  • 我是否为每个视图创建一个包含该页面可能需要的所有数据的主对象?
  • 有更好的方法吗?

【问题讨论】:

  • 尽量避免“ViewData”! ViewModel 是强类型的,比数据堆更好:-)

标签: asp.net-mvc design-patterns


【解决方案1】:

你可以用Data Transfer Object定义你的强类型View

例如:您的View 需要一个Student 列表和一个Teacher 列表,那么您可以定义一个数据传输对象(包装器):

public class FrontPageDTO
{
    public List<Student> StudentList { get; set; }
    public List<Teacher> TeacherList { get; set; }
}

然后将此 DTO 的实例传递给您的 View

【讨论】:

    【解决方案2】:

    “每个视图的主对象”称为View Model。这是我的首选解决方案。

    【讨论】:

      【解决方案3】:

      除了视图模型,您还可以使用动作过滤器将“参考数据”从控制器传递到视图。请参阅article 了解它。

      【讨论】:

        【解决方案4】:

        尝试为您的应用程序实现 ViewModel。下面是一个创建简单 ViewModel 的示例。

        http://highoncoding.com/Articles/659_Implementing_ViewModel_in_ASP_NET_MVC_Application.aspx

        【讨论】:

          猜你喜欢
          • 2010-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多