Я немного растерялся ...
У меня есть одно действие, которое принимает идентификатор, загружает объект и передает его в представление, которое привязано к модели этого типа объекта.
После редактирования данных в форме, предоставленной представлением, я отправляю обратно к другому действию, которое принимает объект того же точного типа, что и модель.
Однако на данный момент я не могу просто вызвать Repository.Save, я думаю, что у меня теперь совершенно новый объект, больше не связанный с объектом из исходного запроса базы данных, который был отправлен в View.
Так как же я могу обновить ранее запрошенный объект и сохранить изменения в БД вместо того, чтобы вернуть новый объект из представления?
Я даже попытался получить новый экземпляр объекта из БД и присвоить ему возвращенный объект View, а затем Repo.Save (), но все равно не повезло.
Что я здесь не так делаю?
КОД КОНТРОЛЛЕРА:
[Authorize]
public ActionResult EditCompany(int id)
{
//If user is not in Sys Admins table, don't let them proceed
if (!userRepository.IsUserSystemAdmin(user.UserID))
{
return View("NotAuthorized");
}
Company editThisCompany = companyRepository.getCompanyByID(id);
if (editThisCompany == null)
{
RedirectToAction("Companies", new { id = 1 });
}
if (TempData["Notify"] != null)
{
ViewData["Notify"] = TempData["Notify"];
}
return View(editThisCompany);
}
//
// POST: /System/EditCompany
[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditCompany(Company company)
{
string errorResponse = "";
if (!isCompanyValid(company, ref errorResponse))
{
TempData["Notify"] = errorResponse;
return RedirectToAction("EditCompany", new { id = company.CompanyID });
}
else
{
Company updateCompany = companyRepository.getCompanyByID(company.CompanyID);
updateCompany = company;
companyRepository.Save();
return RedirectToAction("EditCompany", new { id = company.CompanyID });
}
return RedirectToAction("Companies", new { id = 1 });
}