ASP.NET MVC2 - 模型在一个View页面上绑定多个数据源 - 选项?

时间:2011-02-23 16:18:26

标签: asp.net-mvc asp.net-mvc-2

我有一个视图页面(MyView.aspx)和许多要在此页面上绑定的数据源。

让我们说它有书籍,出版商,评论等。

其中每一个都有一个提供List,List等的对象。

在我看来,我的多功能模特招架是什么?

我想查看每个是否为空,然后枚举它。但我无法检查Model.Count(),因为如果我将页面设置为继承,那么模型不会由所有这些对象组成吗?

我有什么选择?我应该在控件/局部视图中加载每个内容区域吗?

或者我可以将每个对象转储到ViewData中,然后通过在视图中强制转换来检查计数吗?

非常感谢您查看我的问题。

2 个答案:

答案 0 :(得分:6)

您是否考虑使用包含所有不同数据字段的所有列表的ViewModel并使用它来填充您的View?

示例:

<强>视图模型:

public class MyViewModel
{
   List<Book> Books {get; set;}
   List<Publisher> Publishers {get; set;}
   List<Comment> Comments {get; set;}
   //Other fields...

   //Constructors...
}

然后在您的视图中,您可以在枚举之前检查特定字段是否为空:

查看:

if(Model.Books.Count() != 0)
{
   //Enumerate through results here
}

答案 1 :(得分:0)

Rionmonster可能是最好的解决方案 - 另一种是使用强类型的局部视图。您可以将所有内容加载到视图数据中,然后将每个段注入相应的局部视图中。