我試圖創建一個下拉列表,讓你指定一個員工工作的公司。以下是我的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超級新手!我已經發布了一個回答我自己的問題。 –