【发布时间】:2017-04-27 01:16:07
【问题描述】:
我必须实体,我尝试按他们分组,但我无法让它工作。
当我运行它时,我收到以下错误,我认为这是因为我尝试将 GroupBy 解析为 ToDictionary(),请参阅控制器方法。但在视图中它使用 IEnumerable。在某种程度上,我需要将 Dictionary 解析为视图。但我不知道怎么做。
您有什么想法可以解决这个问题吗?
传入字典的模型项的类型为:
System.Collections.Generic.List1[System.Collections.Generic.KeyValuePair2[System.String,System.Int32]]但是这个字典需要一个类型的模型项:
System.Collections.Generic.IEnumerable1[aProejct.Models.Database.Properties]`。
这里有我的控制器方法:
public ActionResult Test()
{
var group = db.Propertiess.AsNoTracking().GroupBy(x => x.PropertiesName).ToDictionary(g => g.Key, g => g.Count());
return View(group.ToList());
}
我的看法
model IEnumerable<aProject.Models.Database.Properties>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Test</title>
</head>
<body>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<ul>
@foreach (var group in Model.GroupBy(item => item.PropertiesName)) {
<li>
@Html.Encode(group.Key)
<ul>
@foreach (var item in group)
{
<li>
@Html.Encode(item.SubPropertiess)
</li>
}
</ul>
</li>
}
</ul>
</body>
</html>
【问题讨论】:
-
错误在您的视图中。尝试像 @model List
. 一样管理它 -
如果仍然出错,只需关注您的组变量,然后无论出现什么类型,将其添加到模型中。
-
谢谢,我会试试 :)
-
你也不应该真的需要在你的视图中做 GroupBy,因为你已经在你的控制器动作中对项目进行分组。
标签: sql entity-framework linq model-view-controller group-by