将实体框架创建的数据库中的项目加载到helper的下拉列表中

本文关键字:加载 下拉列表 helper 项目 数据库 实体 框架 创建 | 更新日期: 2023-09-27 18:04:29

我一直在努力从通过实体框架创建的数据库表加载项目的显示列表。

我在网上找到了代码示例,但许多都有一个静态列表的项目创建,然后添加到下拉列表列表像。http://www.aspnetmvcninja.com/general/asp-net-mvc-dropdown-list-example。我发现了斯科特·艾伦的一篇文章,这是我所拥有的基础(http://odetocode.com/Blogs/scott/archive/2010/01/18/drop-down-lists-and-asp-net-mvc.aspx),但我认为问题是我没有正确地将数据加载到_jobs中?

这是我在控制器和其他类中的代码,任何帮助或指导都非常感谢,因为我觉得我很接近,但还没有。

public class JobsController : Controller
{
  var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
  ViewBag.JobTypeAllNames = tasks;
  return View();
}

我有两个类被用于我的实体框架代码首先。Job类引用JobTypes类。

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);

将实体框架创建的数据库中的项目加载到helper的下拉列表中

这不会编译:

public class JobsController : Controller
{
  var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
  ViewBag.JobTypeAllNames = tasks;
  return View();
}

您需要有一个将返回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;
    }
}