【问题标题】:Loop through list of objects inside object循环遍历对象内的对象列表
【发布时间】:2013-05-29 14:52:49
【问题描述】:

我正在使用 mvc,并将名为 DataModel 的类作为我的模型传递给视图:

public class DataModel
{        
    public List<ServerStats> statsPerMonthPerServer { get; set; }
}

这里是 ServerStats 类:

public class ServerStats
{               
    public string ServerID { get; set; }
    public List<ColumnData> ServerMonthStats { get; set; }
}

这里是 ColumnData 类:

public class ColumnData
{
    public string Date { get; set; }
    public double Sum { get; set; }
}

我已经设法构建了我的 ModelData 对象,如果我对其进行调试,它看起来就像我想要的信息在其中,但我无法设法将它从视图中打印出来。这是我试图做的:

查看:

@model IEnumerable<WebApp.Models.DataModel>
@foreach (var server in Model)
{
foreach (var month in server.statsPerMonthPerServer)
{
    @month.ServerID
    foreach (var column in month.ServerMonthStats)
    {
        @column.Date <br />
        @column.Sum <br />
    }
}    
}

以及我构建 DataModel 并将其发送到视图的控制器:

DataModel dm = new DataModel();
dm.statsPerMonthPerServer = new List<ServerStats>();

foreach (var row in serverStats)
        {
                ServerStats ss = new ServerStats();
                ss.ServerID = row.ServerID;
                ss.ServerMonthStats = new List<ColumnData>();
                ColumnData cd = new ColumnData();
                cd.Date = row.Year.ToString() + "-" + row.Month.ToString();
                cd.Sum = row.ServerSum;
                ss.ServerMonthStats.Add(cd);                    
                dm.statsPerMonthPerServer.Add(ss);

        }


        return View(dm);

我得到的错误: 传入字典的模型项的类型为“WebApp.Models.DataModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[WebApp.Models.DataModel]”的模型项。

我正在使用列表,但它说这是一本字典,但我认为它在谈论我的列表。我已经阅读了一些有关 IEnumerable 接口的信息。我必须在除 DataModel 之外的所有类上实现它吗?我认为视图顶部的模型声明可以解决这个问题?任何帮助将不胜感激!

【问题讨论】:

    标签: c# asp.net-mvc-4 razor foreach ienumerable


    【解决方案1】:

    错误信息很清楚。您的视图被强类型化为IEnumerable&lt;DataModel&gt;,但从您的控制器操作中,您只将一个DataModel 实例传递给视图。我猜你的意思是:

    @model WebApp.Models.DataModel
    @foreach (var month in Model.statsPerMonthPerServer)
    {
        <h3>@month.ServerID</h3>
        @foreach (var column in month.ServerMonthStats)
        {
            @column.Date <br />
            @column.Sum <br />
        }
    } 
    

    【讨论】:

    • @Xerion:当你的问题解决后,至少接受一个答案。
    • @Veer 你要等几分钟才能检查,冷静
    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 2020-06-09
    • 2014-02-22
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多