asp.net mvc 4 - Razor, MVC4, @html.dropdownlistfor problems -
i'm trying create drop down list populates database. 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; } }
what want create form create new project hours associated project , employee. i'm trying use dropdownlists display employees , projects on create form. obviously, i'm new @ this, have far is:
[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 form:
@model timesheetmvc.models.projecthour ... @html.dropdownlistfor(model => model.employeeid, (selectlist)viewbag.employeeid)
which apparently horribly wrong. appreciated...!
don't use same name employeeid. need 2 things create dropdown list in asp.net mvc: scalar property hold selected value , collection property contain possible values. since using viewbag (which totally recommend against) following:
viewbag.employees = emp;
and in view:
@html.dropdownlistfor( model => model.employeeid, (ienumerable<selectlistitem>)viewbag.employees )
but said not @ approach recommend. recommend using view models. define ienumerable<selectlistitem>
property on view model:
public ienumerable<selectlistitem> employees { get; set; }
and in controller populate view model property , make view typed view model.
Comments
Post a Comment