我正在使用 mvc,并将名为 DataModel 的类作为我的模型传递给 View :
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 对象,如果我调试它,看起来我想要的信息就在其中,但我无法设法从 View 中打印出来。这就是我尝试做的:
查看:
@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 并将其发送到 View 的 Controller :
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 接口(interface)的内容。我是否必须在除 DataModel 之外的所有类上实现它?我认为 View 顶部的模型减速可以解决这个问题?任何帮助将不胜感激!
最佳答案
错误信息非常清楚。您的 View 强类型为 IEnumerable<DataModel>
但是从你的 Controller 操作中你只传递了一个 DataModel
View 的实例。我猜你的意思是:
@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 />
}
}
关于c# - 循环遍历对象内部的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897012/