Я пытаюсь отобразить в ASP.NET GridView свойство связанного объекта, который был динамически создан с использованием динамического объекта.В моем примере 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 (я упростил его для ясности и не включил объявление CustomerCollection, которое я используюв моей привязке ASP.NET):
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: Привязка данных: «System.Dynamic.ExpandoObject» не содержит свойства с именем'FullName'.
Я уверен, что делаю что-то не так, но не могу найти что.Когда я добавляю свойство с именем FullName в свой объект Customer и позволяю получателю возвращать DynamicProperties.FullName, он работает как шарм (мой ASP.NET Eval в данном случае ссылается на FullName , а не на DynamicProperties.FullName).
Идея?Спасибо, Омид.