首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ASPNET视图中获取IQueryable对象项

在ASPNET视图中获取IQueryable对象项
EN

Stack Overflow用户
提问于 2017-04-09 16:15:26
回答 2查看 1K关注 0票数 1

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

由于它们不是强类型的,所以我无法访问(并正确显示)对象codename_en (请注意我使用动态linq的原因是列名因select而异)。我试图通过索引item[0], item[1]访问值,但是我得到了一个Cannot apply indexing with [] to an expression of type 'object'错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-09 18:30:54

如果您已经知道这些属性名称,您可以使用它们。

代码语言:javascript
复制
item.GetType().GetProperty("code").GetValue(item);

或者,只需使用更多的反射,并呈现该对象所具有的所有属性。

代码语言:javascript
复制
@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或其他不希望呈现的私有数据。

票数 1
EN

Stack Overflow用户

发布于 2017-04-09 19:28:17

如果希望保持模型类的原样,只需在视图中使用动态对象:

代码语言:javascript
复制
@foreach (dynamic item in Model.languageTable)
{
    <tr>
        <td>@item.code</td>
        <td>@item.name_en</td>
    </tr>
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43309012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档