私は3つのテーブルを持っています:Companies、Subcontracts、CompanyToSubcontract
CompanyToSubcontractテーブルは、会社のGUIDおよび下請けのGUIDです。下請けの編集ビューと作成ビューにMultiSelectListがあり、ユーザーは複数の会社を選択できます。私はついにそれが機能するようになり、下請け編集ビューで選択された正しい会社が表示されます。データの保存に問題はありません。
作成ビューでは、下請け契約には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));
}
}
}