2012-07-14 31 views
0

分類產品清單,我有以下實體:顯示的類別和子類別,在乾燥的方式

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

回答

1

關於您關於模型結構的問題,我認爲類別應該肯定是一個單獨的實體 - 您的數據庫將在標準化(類別不應該在數據庫中重複多次)。也許:

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