Asp.net mvc 以干式方式显示按类别和子类别排序的产品列表
我拥有以下实体:Asp.net mvc 以干式方式显示按类别和子类别排序的产品列表,asp.net-mvc,entity-framework,dry,categories,conventions,Asp.net Mvc,Entity Framework,Dry,Categories,Conventions,我拥有以下实体: public class Product{ public int ID { get; set; } public string Name { get; set; } public string Category { get; set; } public string SubCategory { get; set; } } 我最终希望显示一个页面,该页面采用IEnumerable并首先按类别对产品进行排序,然后按子类别对产品的每个类别进行排序 我
public class Product{
public int ID { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public string SubCategory { get; set; }
}
我最终希望显示一个页面,该页面采用IEnumerable
并首先按类别对产品进行排序,然后按子类别对产品的每个类别进行排序
我的ViewModel应该是什么样子
起初,我想到了这样的想法:
public class ProductListViewModel{
public IEnumerable<Product> Products { get; set; }
public IEnumerable<string> Categories { get; set; }
public IEnumerable<string> SubCategories { get; set; }
}
公共类ProductListViewModel{
公共IEnumerable乘积{get;set;}
公共IEnumerable类别{get;set;}
公共IEnumerable子类别{get;set;}
}
但是,我的控制器变得充满了逻辑来提取唯一的类别
和子类别
,我没有清晰的方法来处理这样一个事实,即每个类别
都有不同的子类别列表
任何有分类分类经验的人-你能告诉我如何干净地处理这种情况的正确方向吗?我可以完成这项工作,但我觉得我正在使我的代码变得毫无必要的草率和枯燥
我还想知道我的产品
类的结构是否不适合处理类别
/子类别
-其他人也有同样的感觉吗?(我认为我的类别可能更适合作为完全独立的对象)关于您关于模型结构的问题,我认为该类别应该
作为一个单独的实体-您的数据库将处于规范化状态(该类别不应在数据库中重复多次)。也许:
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,您还可以为单个产品提供多个类别)。这也创建了类别和子类别之间的关系。您希望如何在视图上显示信息?@DarinDimitrov用户将看到类别的列表
-他们将单击类别
,该类别
中所有产品的列表将滑出。现在可见的产品列表
将按子类别进行排序
。看起来非常合理。我现在无法真正关注回应,我会在有时间关注的时候回来评论。这是一个很好的方法来处理我的情况。非常感谢你。