MVC模型:向View提交多个对象

时间:2009-01-12 03:02:44

标签: asp.net-mvc

我不确定这两种方法是否有区别。如果是这样,在向View提交多个对象时,这被认为是更好的做法。

  1. 让控制器为每个对象模型单独调用数据层,然后将对象包装在模型中以发送到视图。

  2. 定义“演示”模型并让控制器调用该单个模型发送到视图。

  3. 其它...?

2 个答案:

答案 0 :(得分:3)

您应该向View发送一个对象,有时称为ViewModel对象,其中包含视图所需的所有数据(包括域模型对象)。

答案 1 :(得分:3)

我假设你有一个视图,它可以以列表格式呈现来自多个模型的一些信息。例如,您可能拥有一组具有一组联系人的客户模型,但在您的列表中,您希望选择显示一些客户详细信息以及主要联系人的姓名和电话号码。在这种情况下我通常会做的是定义一个特定的“演示”模型,该模型仅包含我可能希望在此组合视图中显示的那些细节。它通常是只读模型。使用LINQ to SQL我甚至可以将其定义为表值函数(以支持搜索)并将其与封装各种表的连接的视图相关联。您可以将基于视图的“表示”模型添加到DBML中,并将表值函数与它相关联,作为数据上下文的方法。

我更喜欢这样做,因为我认为在查询方面在服务器上构建查询并从代码中简单地使用它更有效。如果您没有使用表值函数进行搜索,则可以在代码中构造查询并选择“演示”类。为了便于在视图中使用,我倾向于使用匿名类型的实际类。在视图中从匿名类型获取属性将很困难。