显示的类别和子类别,在干燥的方式
问题描述:
分类产品清单,我有以下实体:显示的类别和子类别,在干燥的方式
public class Product{
public int ID { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public string SubCategory { get; set; }
}
我最终将要显示一个网页,需要一个IEnumerable<Product>
和排序Products
首先由Category
- 然后按SubCategory
对Products
的每个Category
进行分类。
我的ViewModel应该是什么样子?
起初,我想出了这样的事情:
public class ProductListViewModel{
public IEnumerable<Product> Products { get; set; }
public IEnumerable<string> Categories { get; set; }
public IEnumerable<string> SubCategories { get; set; }
}
但后来我控制器已满逻辑提取独特Categories
和SubCategories
的,我有应付的事实,没有干净的方式,每个Category
有不同的列表SubCategories
。
任何有按类别排序对象的经验的人 - 你能否推动我如何正确地处理这种情况?我可以完成这项工作,但是我觉得我正在让我的代码不必要地sl and而不干。
我也想知道,如果我的Product
班级以不恰当的方式处理Categories
/SubCategories
- 是否有其他人也有同感? (我认为我的类别可能更适合作为完全独立的对象)
答
关于您关于模型结构的问题,我认为类别应该肯定是一个单独的实体 - 您的数据库将在标准化(类别不应该在数据库中重复多次)。也许:
public class Product{
public int ID { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}
public class Category{
public int ID { get; set; }
public string Name { get; set; }
public SubCategory SubCategory { get; set; }
}
public class SubCategory{
public int ID { get; set; }
public string Name { get; set; }
}
这样你就可以(通过在产品实体的ICollection的,你也可以拥有的单品几大类)分离出来,从产品类别。这也创建了类别和子类别之间的关系。
您希望如何将信息显示在视图上? – 2012-07-14 21:52:42
@DarinDimitrov用户将看到“类别”列表 - 他们将点击一个“类别”,并在该类别中的所有产品列表将滑出。现在可见的'Products'列表将按'SubCategory'排序。 – Ecnalyr 2012-07-15 04:00:59