ViewModel中的列表在发送到控制器后丢失

问题描述 投票:0回答:1

我在详细信息屏幕中有一个视图模型。它显示了所有的信息,但是当我将vm发送到打印功能时,除了返回部分视图之外什么也没做什么我放弃了电话号码和电子邮件的自定义列表。它们在Print函数中显示为空列表。知道为什么吗?

我的观点模型

             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>
c# asp.net-mvc-5
1个回答
1
投票

将列表传递给控制器​​有两种解决方案: 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');
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.