MVC:如何将列表从一个视图传递到另一个视图?

时间:2010-01-10 17:13:19

标签: asp.net-mvc ienumerable

我在视图中有一些数据要传递给子部分视图。部分数据是我想在局部视图中显示的日期列表。我很确定我无法将IEnumerable从一个视图传递到另一个视图(当我在控制器中尝试list时为null)。假设情况确实如此,是否有好的解决方法?

我想过将值连接成一个字符串,然后只是在控制器中解析该字符串。这似乎有点hackish,但我认为它会起作用。这样做有问题吗?还有更好的方法吗?

重新获取我在父视图中获得的数据似乎是一种耻辱。我希望还有另一种方法可以做到。

更新: 这是局部视图的模型:

public class SiteVisitDetailModel
{
    public String URL
    {
        get;
        set;
    }

    public List<DateTime> Dates
    {
        get;
        set;
    }
}

这是父视图中添加局部视图的代码:

<% Html.Telerik().PanelBar().Name("PanelBar").HtmlAttributes(new { style = "padding-left: 0em;" }).Items(items =>
{
    foreach (var item in Model.Visits)
    {
        SiteVisitDetailModel model = new SiteVisitDetailModel();
        model.URL = item.Key;
        model.Dates = (from siteVisit in item
                             select siteVisit.Time).ToList();

        items.Add()
            .Text(item.Key.ToString() + " " + item.Count().ToString() + " visits")
            .LoadContentFrom("SiteViewDetail", "Report", model);        

    }
}).Render();

在SiteVisitDetail操作方法中,正确设置了model.URL,并且model.Dates为null。

2 个答案:

答案 0 :(得分:4)

如果我理解你的问题......

如果可以强类型化部分视图,则其模型可以是列表,您可以执行以下操作:

<%Html.RenderPartial("PartialView",myList);%>

否则,父视图可以将列表添加到其ViewData,这可以从部分视图访问。

答案 1 :(得分:1)

查看这篇文章,了解如何传递模型。

基本上,您应该将模型传递给包含列表的视图。然后你可以稍后再扩展它。

Multiple models sent to a single view instance