C# - Передача данных модели представления вокруг - PullRequest
0 голосов
/ 10 июля 2020

У меня есть метод публикации, в котором есть моя модель представления и все ее данные

[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'
            });
        });
    });

1 Ответ

1 голос
/ 10 июля 2020

Я предполагаю, что клиент проходит работу и модель в теле запроса

1002 * Я покажу, что происходит с этой последовательностью:. https://swimlanes.io/#pZLBbhNBDIbv + xRWLgUpTQq9rUQPBKjgkopEQj06u25notlxGHuT5u3xzCQpSHDitDP2rP35969eA7WwGFOiqPCRHO49j6lpmkXwOXR9BytKe0otONVdO5 / 3PKCPs46H + ZZ7UvRB5rKjzmPg1FMSCtSp59g0kZXaRp0XSPRzJFE4 + BDA2hD4CDmx4f4I6gi2vAGMfTkPVjnMYJ2PpI574Cf4o44dH5artZFWvkxamVv4Tr1PxgDKgAUFvi0 / VdQFR00cAqXZqkIvM / RqHAZMR7ggE / Bmm2tMCssEjjwCJoIdivj4DI7s0jNJvFL7wsGhlkf0YnV11mR4qWyJZMdR8j0Wqly / qwo7FOisBdzevCvzo + lCaEwwCdxhxm // JXWl / q9tnUvUwX84ioBntjf3zM + BYOESDzSFLybrE79M4YFFB4xT + BqFh + gROBUFyJq / tXk78nuSMouBgCjqKGVEe3h7874oZ2k2JdJlqSdlTC4zYVe1pj47JYfPapzkyfZ4NcSVnJ1iMQwHPArcf17XNZzGsYw1vGzwN6M9Wr + zVf5mi1fXlh8 + xDGEpvkF 1007 * введите описание изображения здесь

Вам просто не нужно перенаправлять клиента, просто верните результат другого действия:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SpecialOrderSelection(JobOrder job, ItemViewModel model)
{               
   return SpecialOrderSummary(model);        
}
...