C# 发送到控制器后,ViewModel中的列表丢失

C# 发送到控制器后,ViewModel中的列表丢失,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,我在细节屏幕中有一个视图模型。它可以显示所有的信息,但是当我把虚拟机发送到一个打印功能时,这个功能除了返回部分视图之外什么也不做,我会丢失电话号码和电子邮件的自定义列表。它们在打印函数中显示为空列表。知道为什么吗 我的视图模型 public List<PhoneDetails> Phones {get; set; } public List<EmailDetails> Email { get; set; } 出现问题的

我在细节屏幕中有一个视图模型。它可以显示所有的信息,但是当我把虚拟机发送到一个打印功能时,这个功能除了返回部分视图之外什么也不做,我会丢失电话号码和电子邮件的自定义列表。它们在打印函数中显示为空列表。知道为什么吗

我的视图模型

             public List<PhoneDetails> Phones {get; set; }
             public List<EmailDetails> Email { get; set; }
出现问题的重定向方法是:

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

  • 将列表传递给控制器有两种解决方案:
    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>
            }
    
    }
    

    你能分享你的提交代码吗?是的,那是我的问题。我使用了url.Action,它只传递字符串而不是集合。谢谢你的回答。我用另一种方法解决了问题,但你的方法很有帮助。
    <li role="presentation" class="pull-right"><a href="@Url.Action("Print", "ControllerName", Model)" target="_blank">Print / Full Detail View</a></li>
    
    @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>
            }
    
    }
    
    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');
            }
        });