Я успешно реализовал модель представления, поэтому я могу создавать и возвращать элементы из моей базы данных, используя две таблицы. Моя проблема заключается в редактировании и удалении отдельных элементов.
Я мог редактировать/удалять, когда использовал только одну таблицу, но с двумя я столкнулся с проблемой.
В моем представлении сейчас используется модель представления. Я не могу понять, как передать идентификатор конкретного объекта при передаче идентификатора и модели представления TransactionViewModel в мои параметры метода редактирования.
Вот мой старый пост «Редактировать и редактировать».
public ActionResult Edit(int id = 0)
{
Transactions transactions = _db.Transactions.Find(id);
if (transactions == null)
{
return HttpNotFound();
}
return View(transactions);
}
[HttpPost]
//[ValidateAntiForgeryToken]
public ActionResult Edit(TransactionViewModel viewModel)
{
var transactionType = viewModel.Transaction.TransactionType;
if (ModelState.IsValid)
{
//If the transaction category is an Expense, set it to a negative so we can calculate later.
if (transactionType == Classes.Constants.Expense || (transactionType == Classes.Constants.Payment && viewModel.Transaction.Amount < 0))
{
viewModel.Transaction.Amount *= -1;
}
var transaction = new Transactions()
{
ClientId = viewModel.Transaction.ClientId,
Amount = viewModel.Transaction.Amount,
Date = viewModel.Transaction.Date,
Category = viewModel.Transaction.Category,
Description = viewModel.Transaction.Description,
TransactionType = viewModel.Transaction.TransactionType
};
_db.Entry(transaction).State = EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
return View(viewModel);
}
Я пробовал это для моего редактирования get, но каждый раз он возвращает одно и то же, а не то, что указано в моем представлении. Бывший. Если щелкнуть «Изменить» для клиента D, откроется экран редактирования для клиента A, и я не смогу его сохранить. У меня есть кнопка редактирования и удаления в моей просматриваемой таблице рядом с каждой транзакцией с использованием @Html.ActionLink().
public ActionResult Edit(TransactionViewModel viewModel)
{
if (ModelState.IsValid)
{
var transactions = from t in _db.Transactions
join c in _db.Clients
on t.ClientId equals c.ClientId
select new TransactionViewModel() { Clients = c, Transaction = t };
return View(transactions.FirstOrDefault());
}
return RedirectToAction("Index");
}
Любая помощь будет оценена по достоинству. Спасибо!