私は 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);
エラー: The model item passed into the dictionary is of type 'WebApp.Models.DataModel', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[WebApp.Models.DataModel]' .
私はリストを使用していますが、これは辞書だと言っていますが、それは私のリストについて話していると思います。IEnumerable インターフェイスについていくつか読んだことがあります。DataModel 以外のすべてのクラスに実装する必要がありますか? ビューの上部にあるモデル宣言がこれを処理したと思いましたか? どんな助けも高く評価されます!