Вы просто запутались с моделью просмотра. Модель представления не имеет особого значения. Это просто POCO (обычный старый объект CLR), который содержит ТОЛЬКО информацию, которую вам нужно отображать в представлении, а не действия, не события. Он служит контейнером между контроллерами и представлениями.
Опять же, я не знаю домен, над которым вы работаете, поэтому я предполагаю следующее:
Возможно, вы уже извлекли данные из базы данных и построили эту модель представления с помощью метода GET. Если вы хотите сохранить, например, JobID, вам необходимо объявить свойство в модели представления и поместить его в скрытую форму в вашем представлении, чтобы при отправке формы обратно оно сохранялось.
public class ItemViewModel
{
[Required]
public int JobId { get; set; }
public string ItemId { get; set; }
...
}
Вам также необходимо указать метод и контроллер, который ваша форма отправляет обратно:
@using (Html.BeginForm("specialOrderSelection", "WhatEverController", new { area = "" },
FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(x => x.JobId)
<h2>Special Order Summary</h2>
Затем в вашем методе POST он должен принимать только один параметр - модель представления, поскольку она должна иметь все, что вам нужно:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SpecialOrderSelection(ItemViewModel model)
{
if (ModelState.IsValid)
{
JobOrder jobOrder = db.JobOrders.Find(model.JobId);
if (jobOrder == null)
{
return HttpNotFound();
}
// Do your logic to save anything you want to your database
}
return RedirectionToAction("summary", new { jobId = model.JobId });
}
В конце он перенаправляет на действие «Сводка» в том же контроллере с идентификатором задания (или другим идентификатором ключа для идентификации ваших объектов). Вы снова получаете данные с идентификатором:
public ActionResult Summary(int jobId)
{
// Fetch the data again with the ID, and fill the view model
// ...
var vm = new SpecialOrderViewModel
{
...
};
return View(vm);
}
Там у вас должна быть другая модель представления и представление только для сводной страницы.