2013-05-19 13 views
5

好了,所以我想從我的對象列表 這裏做一個DropDownList對象MVC是我越來越對象的方法的DropDownList從

public List<Category> GetCategoriesList() 
{ 
    BaseShopEntities context = new BaseShopEntities(); 
    List<Category> uniqCategories = (from c in context.Category 
              select c).Distinct().ToList<Category>(); 

    return uniqCategories; 
} 

我試圖把它放進ViewBag這樣的:

ViewBag.Categories = proxy.GetCategoriesList().ToList(); 

,如果im只取的categorys的名字和它解析字符串是沒有問題的,但我需要ID太

我想要得到這樣的數據但不知道如何

@Html.DropDownList("CategoryID", new SelectList(ViewBag.Categories.Name)); 

回答

5

首先,GetCategoriesList已經返回一個列表,所以當你將它添加到ViewBag你不需要ToList

ViewBag.Categories = proxy.GetCategoriesList(); 

其次,爲了創造一個有獨立的名稱和值DropDownList的,你需要的SelectList構造函數的重載如下:

SelectList(IEnumerable, String, String) 

在這裏,你指定列表與填充SelectList以及兩個字符串,其中第一是在列表中的元件和所述第二的字段的名稱是文本字段的名稱。然後使用反射來檢索這些字段的值。在你的情況下,它可能會是這個樣子:

@Html.DropDownList("CategoryID", 
    new SelectList(ViewBag.Categories, "Id", "Name")); 

在這裏,我假設每個類別都有一個Id場和Name場。如果這些字段名稱不正確,則需要相應地更改傳遞給SelectList構造函數的字符串。

關於旁註:您應該爲與數據庫實體類分開的類別創建一個單獨的視圖模型,並創建這些模型的列表。您的觀點不應直接訪問您的數據實體。

+0

節省了我的時間。像魅力一樣工作 –