我有一个名为MyViewModel
的 ViewModel ,其中包含:
public IList<Config> Config { get; set; }
public bool Disabled { get; set; }
public string Name { get; set; }
Config是一个包含ID
&amp;的对象。 Value
我填充所有值,在视图中我需要访问id = x
这个配置单个项目的列表,它应该在标签中显示相应的值。所以我需要一个强类型标签,用于以下内容:
@Html.LabelFor(a => ....)
我不确定我的Linq语句应该在Config.Id = x
标签中显示Config.Value。任何帮助将不胜感激。感谢
答案 0 :(得分:1)
要显示按ID值分组的表格,请先创建所有现有Id号码的列表。
ViewBag.Ids = Config.Select(x => x.Id).Distinct(); //create list of all existing Ids
通过ViewBag将该列表传递到View中,并遍历它以及对象列表:
@foreach(int IdNum in ViewBag.Ids)
{
<table>
@foreach(Config c in Config.Where(x=> x.Id == IdNum))
{
<tr>
<td> @c.ID </td>
<td> @c.property1 </td>
<td> @c.property2 </td>
</tr>
}
</table>
}
在这种情况下,我不会打扰LabelFor()方法,因为只需使用与HTML内联的简写@ object.property就足够了。
答案 1 :(得分:0)
按组显示列表尝试此
<table>
@{
foreach (var group in Model.Config.GroupBy(x => x.Id))
{
<tr>
<td>@group.Key</td> </tr>
int index =0;
@foreach(Config c in Model.Config.Where(x=> x.Id == group.Key))
{
<tr>
<td> @Model.Config[index].ID </td>
<td> @Model.Config[index].property1 </td>
<td> @Model.Config[index].property2 </td>
</tr>
index++;
}
}
}
</table>
答案 2 :(得分:0)
在它上面睡觉后&amp;尝试了几次我终于明白了。这就是我想要的:
@Html.Label(Model.Config.FirstOrDefault(x => x.ConfigId == "x").Value)
出于某种原因,它不适用于@ Html.Display。知道为什么吗?感谢所有的意见和建议。