您好我是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。
此值也会显示在下拉列表中,我需要在提交时将所选值添加到员工模型中。
答案 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