代码之家  ›  专栏  ›  技术社区  ›  AngryHacker

向ASP.NET MVC中的视图发送多个对象的模式

  •  1
  • AngryHacker  · 技术社区  · 14 年前

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

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

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

    • 我是否通过模型传递主对象,其余的信息通过viewdata传递?
    • 我是否为每个视图创建一个主对象,它包含我可能需要的该页面的所有数据?
    • 有更好的方法吗?
    4 回复  |  直到 12 年前
        1
  •  4
  •   Daniel DiPaolo    13 年前

    您可以定义强类型 View 具有 Data Transfer Object .

    你的 视图 需要一个 Student 列表和A Teacher 列表,然后可以定义数据传输对象(包装器):

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

    然后将此dt的一个实例传递给 视图 .

        2
  •  4
  •   Aaronaught    14 年前

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

        3
  •  1
  •   x__dos    14 年前

    除了视图模型之外,您还可以使用操作过滤器将“引用数据”从控制器传递到视图。见 article 关于它。

        4
  •  1
  •   azamsharp    14 年前

    尝试为应用程序实现视图模型。下面是一个创建简单视图模型的示例。

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