c# - 循环遍历对象内部的对象列表

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

我正在使用 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/

相关文章:

c# - ASP.NET MVC 3 : Multiple Html. RenderAction() 问题

c# - Page_Load在asp.net中没有执行

c# - 如何在同一 MVC4 解决方案中的单独项目中使用类库?

c# - 在 ASP MVC 4(测试版)中将 DateTime 发布到 ApiController

c# - Controller 上的 "CA2000 Dispose objects before losing scope"

css - 打开下拉列表后设置第一行样式

javascript - 从多个表单中选择特定元素

c# - 是否可以用 C# 模拟 ms-access 的功能?

c# - 使用 AForge 和 Graphics.FromImage.DrawImage 防止 OutOfMemoryException

c# - 在 C# 中将文本添加到文件的开头和结尾