使用ViewModel显示MVC中的所有项目

时间:2011-10-17 12:51:11

标签: asp.net-mvc model-view-controller linq-to-sql

我有一个显示实体列表的视图(L2Sql),我已经有一个ViewModel,其中包含一些用于编辑/查看的属性。是否建议将IEnumerable传递给View以列出所有实体,或者传递ViewModel列表是否谨慎?

HTMS

更新:基于resopnses,这里是我的ViewModel:

public class CategoryViewModel
   {
      #region Properties

      public IEnumerable<CategoryViewModel> Categories { get; set; }
      public int Id { get; set; }
      public string Name { get; set; }
      public int Order { get; set; }
      public int? ParentCategoryId { get; set; }

      #endregion
   }

对于下拉列表,Views使用Categories属性,这是否可以接受?

2 个答案:

答案 0 :(得分:4)

IEnumerable<ViewModel>是推荐的方法。我见过很多人定义他们的视图模型,如下所示:

public class MyViewModel
{
    public SomeDomainEntity1 Entity1 { get; set; }
    public SomeDomainEntity2 Entity2 { get; set; }
    public IEnumerable<SomeDomainEntity3> Entities3 { get; set; }
}    

实际上,这并不适用于视图模型。这对我来说根本不是视图模型。视图模型不应引用任何实体域模型。

答案 1 :(得分:0)

如果您只需要来自可枚举的信息,那么直接将其传递给视图并没有错。如果您需要一些额外的信息(例如:当前用户或任何其他东西),您应该将您的枚举作为属性放在ViewModel中。