源是由动态Linq返回的非强类型IQueryable。因此,在“视图”中,我有:

由于它们不是强类型的,所以我无法访问(并正确显示)对象code和name_en (请注意我使用动态linq的原因是列名因select而异)。我试图通过索引item[0], item[1]访问值,但是我得到了一个Cannot apply indexing with [] to an expression of type 'object'错误。
发布于 2017-04-09 18:30:54
如果您已经知道这些属性名称,您可以使用它们。
item.GetType().GetProperty("code").GetValue(item);或者,只需使用更多的反射,并呈现该对象所具有的所有属性。
@foreach (var item in Model)
{
<tr>
@{
var type = item.GetType();
var props = type.GetProperties();
foreach (var p in props)
{
<td>
@p.Name
</td>
<td>
@type.GetProperty(p.Name).GetValue(item);
</td>
}
}
</tr>
}当然,您可以循环遍历所有属性,然后只检查和排除一些属性,比如Id或其他不希望呈现的私有数据。
发布于 2017-04-09 19:28:17
如果希望保持模型类的原样,只需在视图中使用动态对象:
@foreach (dynamic item in Model.languageTable)
{
<tr>
<td>@item.code</td>
<td>@item.name_en</td>
</tr>
}https://stackoverflow.com/questions/43309012
复制相似问题