MVC 4 DropDownList无法添加到模型中

时间:2014-07-24 22:04:02

标签: c# asp.net asp.net-mvc asp.net-mvc-4 drop-down-menu

您好我是MVC 4新手并且在尝试使用Html.DropDownList时遇到了错误。

这是我目前的代码。

工作模式:

  namespace Payroll.CORE
  {
  public class Job
  {
     public int JobID { get; set; }
     public string JobTitle { get; set; }

    public virtual ICollection<Employee> Employees { get; set; }
  }
}

员工模型:

    public int EmployeeID { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public int PhoneNumber { get; set; }
    public int CellNumber { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public int PostalCode { get; set; }
    public string BankName { get; set; }
    public int BankAccountNumber { get; set; }
    public string PayInterval { get; set; }
    public double NormalRate { get; set; }
    public double OvertimeRate { get; set; }
    public double SetHours { get; set; }
    public System.DateTime DateOfEmployment { get; set; }
    public System.DateTime LastPaymentRecieved { get; set; }
    public string Active { get; set; }
    public int JobID { get; set; }

    public virtual ICollection<Absent> Absents { get; set; }
    public virtual ICollection<Bonus> Bonuses { get; set; }
    public virtual Job Job { get; set; }
    public virtual ICollection<Holiday> Holidays { get; set; }
    public virtual ICollection<HoursWorked> HoursWorkeds { get; set; }
    public virtual ICollection<Payrolls> Payrolls { get; set; }
    public virtual ICollection<Deduction> Deductions { get; set; }

查看:

     <div class="editor-label">
        @Html.LabelFor(model => model.JobID)
    </div>
    <div class="editor-field">
        @Html.DropDownList("ListSL")

    </div>

控制器:

   [HttpGet]
    public ActionResult Create()
    {

        List<SelectListItem> jobs = new List<SelectListItem>();
        List<Job> list = bll.GetJobCatergories();

        foreach (var a in list)
        {
            jobs.Add(new SelectListItem { Text = a.JobTitle, Value = a.JobID.ToString()       });
        }

        ViewBag.ListSL = jobs;
        return View();
    }

我现在无法将JobID的值输入到我的模型中。我尝试过使用@ Html.DropDownListFor,但是无法用SelectListItem填充它。

我真的没有问题让它与隐藏领域或任何东西一起工作,所以任何帮助将不胜感激。

先谢谢。

编辑: 对不起本来应该更清楚一点。我正在创建一名员工,并为员工分配了一份工作。所以我试图将所选的项目列表值添加到员工中的Value int JobID。

此值也会显示在下拉列表中,我需要在提交时将所选值添加到员工模型中。

3 个答案:

答案 0 :(得分:1)

因为我看不到你的模特......

@Html.DropDownListFor( x => x.JobIdSelected, new SelectList(Model.JobId, "Value", Model.JobId) )

在你的模型中创建一个属性JobIdSelected,它将绑定。

请注意,您将丢失原始选择列表,因此如果您有任何模型错误,则需要将列表重新发送回视图。

答案 1 :(得分:1)

好的,现在模特在那里,试试:

@Html.DropDownListFor(mdl => mdl.Job.JobID,
                      new SelectList(ViewBag.ListSL,
                          "Value",
                          "Text",
                          Model.JobID),
                      "-- Please Select --")

我还要补充一点,就个人而言,我不喜欢ViewBag的使用,因为你失去了静态类型,因此需要在这种情况下转回SelectList。每当我需要一个下拉列表时,我在模型上有一个静态属性,它返回将填充下拉列表的所有项目,所以我最终得到了,例如:

new SelectList(Model.AllJobs,....)

答案 2 :(得分:0)

应该是

@Html.DropDownListFor(m => m.JobID, (IEnumerable<SelectListItem>)ViewBag.ListSL)

这会使用ViewBag.ListSL作为选项

将所选值绑定到属性JobID