在ASP.NET MVC中将多个对象发送到View的模式

时间:2010-01-31 01:10:15

标签: asp.net-mvc design-patterns

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

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

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

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

4 个答案:

答案 0 :(得分:4)

您可以使用Data Transfer Object定义强列表View

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)

除了View Models,您还可以使用Action Filters将“参考数据”从控制器传递到视图。请参阅article

答案 3 :(得分:1)

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

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