我试图创建一个下拉列表,让你指定一个员工工作的公司。以下是我的EmployeeViewModel。 CompanyId是连接到公司表的外键约束数据库字段。雇员控制器的下拉列表值似乎没有进入MVC的数据库5
public class EmployeeViewModel
{
public EmployeeViewModel()
{
}
public EmployeeViewModel(Employee Employee, string CompanyName)
{
Initialize(Employee, CompanyName);
}
public EmployeeViewModel(Employee Employee, CliFFEntities db)
{
Initialize(Employee, db.Companies.Find(Employee.CompanyId).Name);
}
private void Initialize(Employee employee, string CompanyName)
{
this.Id = employee.Id;
this.Name = employee.Name;
this.CompanyId = employee.CompanyId;
this.InternalId = employee.InternalId;
this.CompanyName = CompanyName;
}
public int Id { get; set; }
public string Name { get; set; }
public Nullable<int> InternalId { get; set; }
[Display(Name = "Company")]
public int CompanyId { get; set; }
public String CompanyName { get; set; }
//public List<Company> CompanyList { get; set; }
public IEnumerable<SelectListItem> CompanyList { get; set; } //to be set in controller on an as-needed basis
}
相关部分:
// GET: Employees/Create
public ActionResult Create()
{
var evm = new EmployeeViewModel();
evm.CompanyList = new SelectList(db.Companies, "Id", "Name");
return View(evm);
}
我创建视图的有关部分:
<div class="form-group">
@Html.LabelFor(m => m.CompanyId)
<div class="col-md-10">
@Html.DropDownListFor(m => m.CompanyId, Model.CompanyList)
@Html.ValidationMessageFor(m => m.CompanyId)
</div>
</div>
所以一切似乎很好地工作。事实上,当我查看发布数据时,它甚至将CompanyI设置为正确的值,对应于数据库中的公司ID。
但是,如果我强制数据库端的外键,它会引发错误,因为该公司ID似乎并没有进入员工记录。如果我关闭FK约束,则CompanyId只显示为0.
什么给出了?
我们可以看到您的POST方法吗? –
您如何将视图模型映射到数据模型?你如何保存你的数据模型?你需要显示你的POST方法 –
谢谢,史蒂夫。显然,我没有注意到POST方法。我对MVC超级新手!我已经发布了一个回答我自己的问题。 –