我正在使用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之外的所有类上实现它?我认为在视图顶部的模型decleration处理这个?任何帮助都会得到预防!
答案 0 :(得分: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 />
}
}