2013-05-19 6 views
5

Ok, так что я хочу сделать DropDownList из моего списка объектов здесь мой метод получения объектаDropDownList Из объектов MVC

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(); 

Если я принимаю только имена категорий и разбирает их в строку, нет проблем, но мне тоже нужен ID

Я хочу получить данные, подобные этому, но не знаю, как

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

ответ

5

Во-первых, GetCategoriesList уже возвращает список, так что вам не нужно ToList при добавлении его к ViewBag:

ViewBag.Categories = proxy.GetCategoriesList(); 

Во-вторых, для того, чтобы создать DropDownList что имеет независимые имена и значения, вам необходимо добавить следующую перегрузку SelectList конструктора:

SelectList(IEnumerable, String, String) 

Здесь вы указываете список, с которым введите SelectList, а также две строки, где первое - это имя поля , в котором находятся элементы в списке, а второе - поле . Значения этих полей затем извлекаются с использованием отражения. В вашем случае, это будет, вероятно, выглядеть следующим образом:

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

Здесь я предполагаю, что каждая категория имеет Id поле и Name поля. Если эти имена полей неверны, вам необходимо соответствующим образом изменить строки, переданные в конструктор SelectList.

На стороне примечания. Вы должны создать отдельную модель представления для категорий, которые отделены от класса сущности базы данных и создать их список. Ваши взгляды не должны напрямую обращаться к вашим объектам данных.

+0

Сохранено мое время. Работали как шарм –