Razor, MVC4, @ html.dropdownlist for problems

I am trying to create a dropdown that populates from a database. I have:

public class Employee
    {
        [Key]
        public int Id { get; set; }
        [Required]
        public String FirstName { get; set; }
        [Required]
        public String LastName { get; set; }
        [Required]
        public String JobTitle { get; set; }
    }

    public class Project
    {
        [Key]
        public int Id { get; set; }
        [Required]
        public String ProjectName { get; set; }
        [Required]
        public String CompanyName { get; set; }
    }

    public class ProjectHour
    {
        [Key]
        public int Id { get; set; }
        [Required]
        public decimal Hours { get; set; }
        [Required]
        public DateTime Date { get; set; }
        public virtual ICollection<Employee> employeeId { get; set; }
        public virtual ICollection<Project> projectId { get; set; }
    }

I want to create a form that will create new project hours associated with the project and the employee. I am trying to use dropdownlists to display employees and projects on a creation form. Obviously, I'm completely new to this, but so far I know:

[HttpPost]
     public ActionResult CreateProjectHour(ProjectHour newProjectHour)
     {
             using (var db = new TimesheetContext())
             {
                 IEnumerable<SelectListItem> emp = db.Employees
                  .Select(c => new SelectListItem
                  {
                      Value = c.Id.ToString(),
                      Text = c.LastName
                  });
                 ViewBag.EmployeeId = emp;

                 db.ProjectHours.Add(newProjectHour);
                 db.SaveChanges();
             }

             return RedirectToAction("ProjectHourList");
         }
     }

And on the form:

@model TimesheetMVC.Models.ProjectHour
...
@Html.DropDownListFor(model => model.employeeId, (SelectList)ViewBag.EmployeeId)

This is apparently terribly wrong. Any help would be greatly appreciated ...!

+5
source share
3 answers

EmployeeId. 2 ASP.NET MVC: , , . ViewBag ( ), :

ViewBag.Employees = emp;

:

@Html.DropDownListFor(
    model => model.employeeId, 
    (IEnumerable<SelectListItem>)ViewBag.Employees
)

, , , . . IEnumerable<SelectListItem> :

public IEnumerable<SelectListItem> Employees { get; set; }

, .

+13

SelectList selectList = new SelectList(db.Employees, "Id", "LastName");
ViewBag.EmployeeList = selectList;

@Html.DropDownBoxFor(model => model.id_Employee, ViewBag.EmployeeList as SelectList)

.

+9

EmployeeId IEnumerable<SelectListItem>, a SelectList.
.

SelectList.

0

All Articles