Списки во ViewModel утеряны после отправки в контроллер - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть View Model на подробном экране.Он показывает всю информацию, но когда я отправляю виртуальную машину в функцию печати, которая ничего не делает, но возвращает частичное представление, я освобождаю пользовательские списки телефонных номеров и электронных писем.Они отображаются как пустые списки внутри функции печати.Есть идеи, почему?

Моя модель просмотра

             public List<PhoneDetails> Phones {get; set; }
             public List<EmailDetails> Email { get; set; }

Моя версия печати

   @if (Model.Phones.Count > 0)
        {
            foreach (var phone in Model.Phones)
            {
             <p>
                phone.PhoneType Phone: <span class="policy-bold">phone.PhoneNumber</span>
            </p>
            }
        }
        else
        {
            <p>Phone Number: <span class="policy-bold">N/A</span></p>
        }
    </div>

Моя функция печати

  public virtual ActionResult Print(PolicyDetailViewModel viewModel)
    {

        return PartialView("Print", viewModel);
    }

Метод перенаправления, которыйбыла проблема:

<li role="presentation" class="pull-right"><a href="@Url.Action("Print", "ControllerName", Model)" target="_blank">Print / Full Detail View</a></li>

1 Ответ

1 голос
/ 17 апреля 2019

Существует два способа передачи вашего списка контроллеру:
1) с помощью тега формы:

@using(Html.BeginForm( // your paramas ))
{
    @if (Model.Phones.Count > 0)
        {
            foreach (var phone in Model.Phones)
            {
             <p>
                phone.PhoneType Phone: <span class="policy-bold">phone.PhoneNumber</span>
            </p>
            }
        }
        else
        {
            <p>Phone Number: <span class="policy-bold">N/A</span></p>
        }

}

2) Использование ajax:
это всего лишь пример:

var premisesViewModel = $('form').serializeObject();
$.ajax({
        url: form.attr('action'),
        type: 'POST',
        dataType: "json",
        contentType: 'application/json',
        data: JSON.stringify(premisesViewModel),
        success: function (data) {
            alert('done');
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...