将List <t>从View传递给Controller </t>

时间:2014-08-23 04:23:53

标签: c# asp.net-mvc

我遇到了一个问题,将类型为T的List从视图传递回控制器,该控制器在局部视图中加载列表以在模态对话框中显示它们。

这就是我所拥有的:

查看传递给Controller:

@foreach(var queue in itemQueues)
{
    <td>@Html.ActionLink(queues.OpenItems.Count.ToString(), "ItemQueueDetails", "Pod", new { collection = queue.OpenItems }, null)</td>
}

控制器传递到局部视图:

public ActionResult ItemQueueDetails(List<Item> collection)
{
    var cols = typeof(Incident).GetProperties();
    ViewData["DataHeaders"] = cols;
    ViewData["DataRows"] = collection;

    return PartialView("QueueDetails");
}

部分视图可以满足你的期望,所以我现在并不认为它是恰当的。

唯一的问题是,无论在队列列表中存储了多少元素作为参数传递给ItemQueueDetails ActionResult,collection参数总是以一个包含零元素的List结束。

我的应用程序仅显示数据。初始视图只显示队列的计数(虽然它传递整个列表并只显示计数),而点击#项目应该显示显示实际细节的模态。

1 个答案:

答案 0 :(得分:1)

尝试使用ViewbagViewDataTempData并在其中放置列表,然后再将其放入控制器操作中的ViewData["DataRows"]内或尝试以下内容: -

 @foreach(var queue in itemQueues)
  {
     <td>
        @Html.ActionLink(queues.OpenItems.Count.ToString(), "ItemQueueDetails",
        "Pod", new RouteValueDictionary{
        { "collection[0]", queue.OpenItems[0] },
        { "collection[1]", queue.OpenItems[1] }
        })
     </td>
  }