显示的类别和子类别,在干燥的方式

显示的类别和子类别,在干燥的方式

问题描述:

分类产品清单,我有以下实体:显示的类别和子类别,在干燥的方式

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 - 然后按SubCategoryProducts的每个Category进行分类。

我的ViewModel应该是什么样子?

起初,我想出了这样的事情:

public class ProductListViewModel{ 
    public IEnumerable<Product> Products { get; set; } 
    public IEnumerable<string> Categories { get; set; } 
    public IEnumerable<string> SubCategories { get; set; } 
} 

但后来我控制器已满逻辑提取独特CategoriesSubCategories的,我有应付的事实,没有干净的方式,每个Category有不同的列表SubCategories

任何有按类别排序对象的经验的人 - 你能否推动我如何正确地处理这种情况?我可以完成这项工作,但是我觉得我正在让我的代码不必要地sl and而不干。

我也想知道,如果我的Product班级以不恰当的方式处理Categories/SubCategories - 是否有其他人也有同感? (我认为我的类别可能更适合作为完全独立的对象)

+0

您希望如何将信息显示在视图上? – 2012-07-14 21:52:42

+0

@DarinDimitrov用户将看到“类别”列表 - 他们将点击一个“类别”,并在该类别中的所有产品列表将滑出。现在可见的'Products'列表将按'SubCategory'排序。 – Ecnalyr 2012-07-15 04:00:59

关于您关于模型结构的问题,我认为类别应该肯定是一个单独的实体 - 您的数据库将在标准化(类别不应该在数据库中重复多次)。也许:

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的,你也可以拥有的单品几大类)分离出来,从产品类别。这也创建了类别和子类别之间的关系。

+0

看起来很合理。我目前无法真正关注回应,我会在有时间给予必要的关注时回复并发表评论。 – Ecnalyr 2012-07-15 04:03:28

+0

这是一个很好的方法来处理我的情况。非常感谢你。 – Ecnalyr 2012-07-16 10:47:16