2014-09-28 4 views
-1

Я связывание моего выпадающего списка с базой данных, используя EF код первого approach.My модель класс отделBinding списка выпадающих в ASP.NET MVC

public class Department 
{ 
    [Key] 
    public int DepartmentID { get; set; } 
    [Required] 

    [Display(Name = "Department")] 

    public string DepartmentName { get; set; } 

} 

Я получаю все названия отдела в ViewData

ViewData["Departments"] = new SelectList(db.Departments,"DepartmentName"); 

На мой взгляд мой код это

@ Html.DropDownList ("Отделы", "Выбор") Департамент

Thid код связывания мои данные, но не с именем, но их являются 10 объектов, как MyProjectName.Models.Department

MyProjectName.Models.Department

MyProjectName.Models.Department

MyProjectName.Models.Department

MyProjectName.Models.Department ....

Нужна помощь, что происходит неправильно в моем коде.

ответ

3

Попробуйте использовать correct constructor из SelectList класса принимает коллекцию, значение и свойства текста:

ViewData["Departments"] = new SelectList(db.Departments, "DepartmentID", "DepartmentName"); 

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

public class MyViewModel 
{ 
    public int SelectedDepartmentID { get; set; } 
    public IEnumerable<SelectListItem> Departments { get; set; } 
} 

, что ваши действия контроллера будет заполнить и передать в вид:

public ActionResult Index() 
{ 
    var model = new MyViewModel(); 
    model.Departments = db.Departments.ToList().Select(d => new SelectListItem 
    { 
     Value = d.DepartmentID.ToString(), 
     Text = d.DepartmentName, 
    }); 
    return View(model); 
} 

и в вашем сильно типизированных вы могли бы использовать строго типизированную версию DropDownListFor из вспомогательный для генерации выпадающего списка:

@model MyViewModel 
... 
@Html.DropDownListFor(x => x.SelectedDepartmentID, Model.Departments, "Select Department") 
+0

Спасибо, что его работа –

Смежные вопросы