У меня есть метод публикации, в котором есть моя модель представления и все ее данные
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SpecialOrderSelection(JobOrder job, ItemViewModel model)
{
return RedirectToAction("SpecialOrderSummary", "JODetails", model);
}
На странице «Выбор особого порядка» пользователю отображается список частей и он должен выбрать, является ли часть необходимо передать, собрать или утилизировать. Он возвращает контроллеру правильные данные. Но после отправки я хочу предоставить пользователю сводную страницу всего, что он сделал. Для этого я попытался передать модель представления на страницу «Сводка заказа». Метод get выглядит так:
public ActionResult SpecialOrderSummary(ItemViewModel model)
{
return View(model);
}
Вот моя модель
public class ItemViewModel
{
[Required]
public int ID { get; set; }
public string ItemId { get; set; }
public string ItemName { get; set; }
public string MFGNumber { get; set; }
public IList<ItemPartViewModel> Parts { get; set; }
public IList<ItemComponentViewModel> Components{ get; set; }
public IList<ComponentPartViewModel> ComponentParts { get; set; }
public IList<ComponentSubCompViewModel> ComponentSubComps { get; set; }
public IList<SubCompPartViewModel> SubCompParts { get; set; }
public IList<SubCompSubCompViewModel> SubCompSubComps { get; set; }
public IList<SubCompSubCompPartViewModel> SubCompSubCompParts { get; set; }
}
И затем я хочу, чтобы представление делало что-то вроде этого
@model PIC_Program_1._0.Models.ItemViewModel
@using PIC_Program_1._0.Models
@{
ViewBag.Title = "SpecialOrderSummary";
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@*@Html.HiddenFor(model => model.ID)*@
@Html.HiddenFor(x => x.ID)
<h2>Special Order Summary</h2>
<p style="color:red" class="noprint">Please review and verify </p>
<h2>
Transfers
</h2>
<h3>
Parts
</h3>
foreach (var part in Model.Parts) // part is null here
{
<p>@part.PartName</p>
}
}
Но Model.Parts всегда имеет счетчик 0. Так что мне интересно, как я могу передавать данные модели представления. Любая помощь приветствуется.
Как предложил Дэвид, я пробовал сделать это через AJAX, но он не go на страницу просмотра, на которую я хочу go, просто перезагружает ту же страницу . Вот мой AJAX метод
$(document).ready(function () {
$("button").click(function () {
$.ajax({
url: '@IGT.baseUrl/JODetails/SpecialOrderSummary',
data: $('#form').serialize(),
type: 'GET'
});
});
});