2014-11-19 5 views
0

Я создал классы классов, используя Entity Framework. Это то, что я получил:Выпадающий список MVC - ошибка null

public partial class Employees 
{ 
    public Employees() 
    { 
     this.Employees1 = new HashSet<Employees>(); 
     this.Vacations = new HashSet<Vacations>(); 
    } 

    public int EmployeeID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string MiddleName { get; set; } 
    public string Phone { get; set; } 
    public string JobTitle { get; set; } 
    public int ManagerID { get; set; } 
    public string LastUpdatedBy { get; set; } 
    public Nullable<System.DateTime> LastUpdatedDate { get; set; } 
    public bool Status { get; set; } 

    public virtual ICollection<Employees> Employees1 { get; set; } 
    public virtual Employees Manager { get; set; } 
    public virtual ICollection<Vacations> Vacations { get; set; } 
} 

Затем я создал вид Модель для этого класса:

public class EmployeeViewModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string MiddleName { get; set; } 
    public string Phone { get; set; } 
    public string JobTitle { get; set; } 
    public int ManagerID { get; set; } 
    public string ManagerFullName 
    { 
     get 
     { 
      return FirstName + " " + LastName; 
     } 

    } 
    public bool Status { get; set; } 

    public virtual ICollection<Employees> Employees1 { get; set; } 
    public virtual Employees Manager { get; set; } 


} 

В классе EmplyeeControler У меня есть действие:

public ActionResult Create() 
{ 
    EmployeeViewModel employeeVM = new EmployeeViewModel(); 
    ViewBag.Employees1 = new SelectList(employeeVM.Employees1, "EmployeeID", "ManagerFullName"); 
    return View(employeeVM); 
} 

И вид:

<div class="editor-label"> 
    @Html.LabelFor(model => model.ManagerID, "Manager") 
</div> 
<div class="editor-field"> 
    @Html.DropDownList("ManagerID", "--- Select Manager ---") 
    @Html.ValidationMessageFor(model => model.ManagerFullName) 
</div> 

Но я принимаю ошибку on-line:

Значение не может быть пустым. Имя параметра: элементы

ViewBag.Employees1 = new SelectList(employeeVM.Employees1, "EmployeeID", "ManagerFullName"); 

Что плохого в моем коде?

+0

Как MVC будет знать, 'ViewBag.Employees1' должны быть использованы? Используйте '@ Html.DropDownListFor (model => model.ManagerID, ViewBag.Employees1," --- Select Manager --- ")'. – GSerg

+0

Это не работает. Произошла та же ошибка. Почему вы хотели внести изменения в представление, когда ошибка возникает в контроллере? – ironcurtain

ответ

0
<div class="editor-label"> 
    @Html.LabelFor(model => model.ManagerID, "Manager") 
</div> 
<div class="editor-field"> 
    @Html.DropDownListFor(x => x.ManagerID, (IEnumerable<SelectListItem>)ViewBag.Employees1,"--- Select Manager ---")); 
    @Html.ValidationMessageFor(model => model.ManagerFullName) 
</div> 

Подробнее см это link

+0

Это все еще не работает. Произошла та же ошибка. – ironcurtain

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