我有一个类似于下面列出的对象映射.当我试图在GridView中绑定NestedClass的属性时,我得到了一个错误:

"在所选数据源上找不到名为‘NestedClass.Name’的字段或属性."

GridView绑定到ObjectDataSource,ObjectDataSource绑定到完全填充的边界类实例.

有什么办法吗?

示例类:

public class BoundClass
{
    public string Name { get; set; }
    public NestedClass NestedClass { get; set; }
}

public class NestedClass
{
    public string Name { get; set; }
}

推荐答案

在BoundField列中只能显示实例的即时属性.

人们必须改用DataBinder.在itemtemplate中求值以访问嵌套属性,而不是将其指定给boundfield.

例子:

<asp:TemplateField>
    <itemtemplate>
        <p><%#DataBinder.Eval(Container.DataItem, "NestedClass.Name")%></p>
    </itemtemplate>
</asp:TemplateField>

或者,您也可以创建一个自定义类,该类继承边界字段并覆盖GetValue以使用DataBinder.Eval,如本文所述:

http://web.archive.org/web/20120121123301/http://iridescence.no/post/FixingBoundFieldSupportforCompositeObjects.aspx

Asp.net相关问答推荐

使用 aspnet core SignalR 客户端为 VSIX 项目.

Swashbuckle 通过 .NET 应用程序中的 XML 注释使用格式标识符

由于 Blazor Change Detection API,组件重新渲染被跳过.如何避免?

无法翻译 LINQ

什么是 SNIReadSyncOverAsync,为什么需要很长时间才能完成?

您如何处理多个环境的多个 web.config 文件?

如何为发布模式设置调试错误

如何在 ASP.NET 中使用时区?

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

如何在没有实体框架的情况下使用 ASP.NET Identity 3.0

用于 ASP.NET 的 System.Drawing 的替代品?

与将 Web 应用程序保存在一个默认应用程序池中相比,拥有专用应用程序池的优缺点

HTTP 错误 503.该服务在简单的 ASP.NET 4.0 网站下不可用

Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用

将数据表导出到 Excel 文件

如何使用 WebRequest 发布数据并从网页获取响应

@(at) 登录文件路径/字符串

根据条件更改 GridView 行 colored颜色

如何在 asp.net 中实现Access-Control-Allow-Origin标头

Sys.WebForms.PageRequestManagerServerErrorException:处理服务器上的请求时发生未知错误.