У меня есть 3 таблицы:
Компании,
Субподряды и
CompanyToSubcontract
Таблица CompanyToSubcontract является руководством Компании и руководством Субконтракта. У меня есть MultiSelectList в представлениях редактирования и создания субконтракта, где пользователь может выбрать несколько компаний. Наконец-то я заработал, где отображаются правильные компании, выбранные в представлении «Субподряд». У меня нет проблем с сохранением данных.
В представлении создания у субконтракта нет guid до тех пор, пока он не будет записан в базу данных Sql, так как я могу получить guid для сохранения в таблице CompanyToSubcontract?
Кроме того, в режиме редактирования я делаю что-то не так. Это не спасает. Выбор компании. Мне также нужно удалить записи для компаний, которые не выбраны. Каков наилучший способ сделать это?
Я следовал учебному пособию по NerdDinner, чтобы получить основную структуру, и теперь я пытаюсь обновить его, чтобы удовлетворить свои потребности.
Кто-нибудь, кто может указать мне в правильном направлении?
В хранилище субконтрактов:
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));
}
}
}