【发布时间】:2017-05-30 22:39:07
【问题描述】:
我正在学习使用 ASP.NET 和实体框架用 C# 编写 MVC 网站。
但是,我正在努力编写一个可以使用Html.DisplayFor 方法的字典查找。
假设我有以下两个模型:
public class Dog
{
public int Id;
public string Name;
public int BreedId;
(...)
}
public class Breed
{
public int Id;
public string Name;
(...)
}
然后,在控制器的某处,我正在创建一个包含所有品种的字典,由Id 索引,并将其分配给ViewBag.Breeds。
在Dogs/Index 视图中,我使用了类似的东西:
@model IEnumerable<App.Models.Dog>
<table>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@(ViewBag.Breeds[item.BreedId].Name)
</td>
</tr>
}
</table>
它会按预期生成一个狗及其品种的表格。
但是,如果我尝试在 Html.DisplayFor 方法中使用字典查找,则会收到错误消息,因为表达式树可能不包含动态操作:
@Html.DisplayFor(modelItem => ViewBag.Breeds[item.BreedId].Name)
将其转换为显式类型的字典也不起作用:
@Html.DisplayFor(modelItem => ((Dictionary<int, Breed>)ViewBag.Breeds)[item.BreedId].Name)
有没有办法让它工作?
【问题讨论】:
标签: c# asp.net asp.net-mvc dictionary