Ich arbeite mit Datenbindung in ASP.Net 2.0, und ich bin auf ein Problem mit dem Befehl Eval gestoßen.Überschreiben von ToString für ein Objekt zur Verwendung in DataBinding
ich eine Klasse, die ich bin Datenbindung, sieht das wie folgt aus:
public class Address
{
public string Street;
public string City;
public string Country;
public new string ToString()
{
return String.Format("{0}, {1}, {2}", Street, City, Country);
}
}
Und eine andere Klasse (die, die ich bin Datenbindung zu):
public class Situation
{
public Address ObjAddress;
public string OtherInformation;
}
Nun, wenn ich eine datengebundene Kontrolle haben, z
<asp:DetailsView ID="dvSituation" DataSourceID="dataSourceThatPullsSituations" AutoGenerateRows="false"runat="server">
<EmptyDataTemplate>
No situation selected
</EmptyDataTemplate>
<Fields>
<asp:BoundField HeaderText="Other data" DataField="OtherInformation" />
<asp:TemplateField>
<HeaderTemplate>
Address
</HeaderTemplate>
<ItemTemplate>
<%-- This will work --%>
<%# ((Situation)Container.DataItem).ObjAddress.ToString() %>
<%-- This won't --%>
<%# Eval("ObjAddress") %>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
Warum wird meine ToString() - Klasse nicht aufgerufen, wenn dieses Feld ausgewertet wird? Ich erhalte nur den Typnamen, wenn diese Prüfung ausgeführt wird.