正在将 entity framework 个创建的数据库中的项目加载到助手的下拉列表中
Loading items from entity framework created database into dropdownlistfor helper
我一直在努力从通过 entity framework 创建的数据库 table 加载项目的显示列表。
我在网上找到了代码示例,但很多都创建了一个静态项目列表,然后将其添加到下拉列表列表中。
http://www.aspnetmvcninja.com/general/asp-net-mvc-dropdown-list-example. I found an article by Scott Allen that is the basis for what I have (http://odetocode.com/Blogs/scott/archive/2010/01/18/drop-down-lists-and-asp-net-mvc.aspx) 但我认为问题是我没有将数据正确加载到 _jobs?
这是我的控制器和其他 classes 中的代码,非常感谢任何帮助或指导,因为我觉得我很接近但又不是。
public class JobsController : Controller
{
var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
ViewBag.JobTypeAllNames = tasks;
return View();
}
我有两个 class 首先用于我的 entity framework 代码。作业 class 引用作业类型 class。
public class Job
{
[Key]
[Display(Name="Job ID")]
public int JobID { get; set; }
[Display(Name = "Job Type")]
public int JobTypesID
{
get;
set;
}
private readonly List<JobType> _jobs;
public IEnumerable<SelectListItem> JobTypeItems
{
get
{
return new SelectList(_jobs, "JobTypesID", "JobDescription",1);
}
}
}
public class JobType
{
public int JobTypeID { get; set; }
[Display(Name = "Task")]
public string JobDescription { get; set; }
}
在我看来我有
@Html.DropDownListFor(model => model.JobTypesID, Model.JobTypeItems);
这不会编译:
public class JobsController : Controller
{
var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
ViewBag.JobTypeAllNames = tasks;
return View();
}
您需要执行 return 和 ActionResult
的操作,我会使用您认为的模型,而不是使用 ViewBag
:
public class JobsController : Controller
{
public ActionResult Index()
{
var model = new Job();
var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
model.JobTypeItems = tasks;
return View(model);
}
}
ps 您需要调整 Job
模型以包含 setter 并删除未使用的 _jobs
:
public class Job
{
[Key]
[Display(Name="Job ID")]
public int JobID { get; set; }
[Display(Name = "Job Type")]
public int JobTypesID
{
get;
set;
}
public IEnumerable<SelectListItem> JobTypeItems
{
get; set;
}
}
我一直在努力从通过 entity framework 创建的数据库 table 加载项目的显示列表。
我在网上找到了代码示例,但很多都创建了一个静态项目列表,然后将其添加到下拉列表列表中。 http://www.aspnetmvcninja.com/general/asp-net-mvc-dropdown-list-example. I found an article by Scott Allen that is the basis for what I have (http://odetocode.com/Blogs/scott/archive/2010/01/18/drop-down-lists-and-asp-net-mvc.aspx) 但我认为问题是我没有将数据正确加载到 _jobs?
这是我的控制器和其他 classes 中的代码,非常感谢任何帮助或指导,因为我觉得我很接近但又不是。
public class JobsController : Controller
{
var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
ViewBag.JobTypeAllNames = tasks;
return View();
}
我有两个 class 首先用于我的 entity framework 代码。作业 class 引用作业类型 class。
public class Job
{
[Key]
[Display(Name="Job ID")]
public int JobID { get; set; }
[Display(Name = "Job Type")]
public int JobTypesID
{
get;
set;
}
private readonly List<JobType> _jobs;
public IEnumerable<SelectListItem> JobTypeItems
{
get
{
return new SelectList(_jobs, "JobTypesID", "JobDescription",1);
}
}
}
public class JobType
{
public int JobTypeID { get; set; }
[Display(Name = "Task")]
public string JobDescription { get; set; }
}
在我看来我有
@Html.DropDownListFor(model => model.JobTypesID, Model.JobTypeItems);
这不会编译:
public class JobsController : Controller
{
var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
ViewBag.JobTypeAllNames = tasks;
return View();
}
您需要执行 return 和 ActionResult
的操作,我会使用您认为的模型,而不是使用 ViewBag
:
public class JobsController : Controller
{
public ActionResult Index()
{
var model = new Job();
var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
model.JobTypeItems = tasks;
return View(model);
}
}
ps 您需要调整 Job
模型以包含 setter 并删除未使用的 _jobs
:
public class Job
{
[Key]
[Display(Name="Job ID")]
public int JobID { get; set; }
[Display(Name = "Job Type")]
public int JobTypesID
{
get;
set;
}
public IEnumerable<SelectListItem> JobTypeItems
{
get; set;
}
}