2

我正在使用 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 之外的所有类上实现它吗?我认为视图顶部的模型声明可以解决这个问题?任何帮助将不胜感激!

4

1 回答 1

5

错误信息非常清楚。您的视图是强类型的,IEnumerable<DataModel>但从您的控制器操作中,您只将一个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 />
    }
} 
于 2013-06-03T12:45:22.217 回答