gpt4 book ai didi

asp.net - 带有 ASP.NET 数据绑定(bind)的 C# 4.0 动态对象

转载 作者:行者123 更新时间:2023-12-01 01:21:11 35 4
gpt4 key购买 nike

我试图在 ASP.NET GridView 中显示已使用动态对象动态创建的绑定(bind)对象的属性。在我的示例中,DynamicProperties.FullName 是动态的。

我的客户代码是:

<asp:ObjectDataSource runat="server" ID="CustomerDataSource" DataObjectTypeName="Customer" TypeName="CustomerCollection" SelectMethod="LoadAll" />

<asp:GridView ID="CustomerGridView" runat="server" AutoGenerateColumns="False" DataSourceID="CustomerDataSource" EnableViewState="False">
<Columns>
<asp:BoundField DataField="FirstName" />
<asp:BoundField DataField="LastName" />
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server" Text='<%#Eval("DynamicProperties.FullName")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

我的 BLL 代码是(为了清楚起见,我对其进行了简化,并且不包括我在 ASP.NET 绑定(bind)中使用的 CustomerCollection 声明):
public partial class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }

private dynamic _dynamicProperties;
public dynamic DynamicProperties
{
get
{
if (_dynamicProperties == null)
{
_dynamicProperties = new ExpandoObject();

_dynamicProperties.FullName = FirstName + " " + LastName;
}
return _dynamicProperties;
}
}
}

当我运行应用程序时,我收到以下 HttpException 错误:
DataBinding:“System.Dynamic.ExpandoObject”不包含名为“FullName”的属性。

我确定我做错了什么,但找不到什么。当我在我的 Customer 对象中添加一个名为 FullName 的属性并让 getter 返回 DynamicProperties.FullName 时,它​​就像一个魅力(我的 ASP.NET Eval 指的是 FullName 在这种情况下,而不是 DynamicProperties.FullName)。

一个想法?
谢谢,
奥米德。

最佳答案

评估 需要object作为类型,而您提供 dynamic .因此, Actor 阵容将有所帮助,并使用 背后的独特属性。评估 :

<%# (Container.DataItem as dynamic).FullName%>

或者简而言之:提供动态对象的地方需要像任何其他类型一样对待,因为它与对象不同。

关于asp.net - 带有 ASP.NET 数据绑定(bind)的 C# 4.0 动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130324/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com