我有一个显示实体列表的视图(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属性,这是否可以接受?
答案 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中。