我有 3 个表:Company、Subcontracts 和 CompanyToSubcontract
CompanyToSubcontract 表是 Company 的 guid 和 Subcontract 的 guid。我在 Subcontract Edit 和 Create 视图上有一个 MultiSelectList,用户可以在其中选择多个公司。我终于让它工作了,它显示了在 Subcontract Edit 视图中选择的正确公司。我没有保存数据的问题。
在创建视图中,分包在写入 Sql 数据库之前没有 guid,那么如何获取 guid 以保存到 CompanyToSubcontract 表中?
另外,在编辑视图中,我做错了什么。它不保存。公司选择。我还需要删除未选中公司的记录。这样做的最佳方法是什么?
我按照 NerdDinner 教程获得了我的基本结构,现在我正在尝试更新以满足我的需求。
谁能指出我正确的方向?
在 SubcontractRepository 中:
public void Save()
{
db.SubmitChanges();
}
在控制器中:
[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult Edit(string id, FormCollection formValues)
{
// Retrieve existing subcontract
subcontract subcontract = subcontractRepository.GetSubcontract(id);
if (subcontract == null)
return View("NotFound");
else
{
try
{
UpdateModel(subcontract);
IEnumerable<Guid> selectedCompanies = Request.Form["Companies"].Split(new Char[] { ',' }).Select(idStr => new Guid(idStr));
foreach (var item in selectedCompanies)
{
CompanyToSubcontract cs = new CompanyToSubcontract();
cs.subcontract_id = subcontract.subcontract_id;
cs.company_id = item;
subcontractRepository.Save();
}
subcontract.lastupdate_date = DateTime.Now;
subcontract.lastupdatedby_user = User.Identity.Name;
//Persist changes back to database
subcontractRepository.Save();
//Perform HTTP redirect to details page for the saved subcontract
return RedirectToAction("Details", new { id = subcontract.subcontract_no });
}
catch
{
ModelState.AddRuleViolations(subcontract.GetRuleViolations());
return View(new SubcontractFormViewModel(subcontract));
}
}
}