今天让我的头转向MVC,并且贯穿了不将模型直接传递到视图的最佳实践。相反,使用ViewModel。将IEnumerable <Object>传递给ViewModel - 对象是否需要ViewModel?
我研究了AutoMapper并计划使用它将我的ViewModel映射到相应的模型。我知道AutoMapper足够聪明,可以将IEnumerable映射到IEnumerable而无需单独映射,只要映射源和目标即可。
但是我对如何处理将ViewModel中的IEnumerable传递给我的视图有点困惑。我目前有我的页面使用包含IEnumerable的ViewModel工作,但我读到这与将IEnumerable直接传递给视图一样糟糕。那么,我需要一个单独的ViewModel来保存将在主ViewModel的IEnumerable属性中使用的对象吗?
那么,活动是有问题的型号:
public class ActivityHistoryViewModel
{
public IEnumerable<Activity> activities { get; set; }
}
我需要创建ActivityViewModel和写我ActivityHistoryViewModel这样吗?
public class ActivityHistoryViewModel
{
public IEnumerable<ActivityViewModel> activities { get; set; }
}
有没有更简单的方法来做到这一点?
Duh,didn'甚至不考虑传递IEnumerable。但我真的想到更大的场景,我需要传递更多的数据。 –
2012-02-22 19:52:58
我添加了代码来代替使用'ActivityHistoryViewModel'。希望它正在寻找什么。 – 2012-02-22 20:02:04
太棒了,我设法让一切正常,包括对嵌套实体对象上的属性的自定义映射。我感谢您的帮助。一旦你想出来,它总是变得容易。 :) – 2012-02-22 20:14:14