我正在ASP.Net 2.0中使用Databinding,並且遇到了Eval命令的問題。在DataBinding中使用對象的重寫ToString
我有一個類,我綁定,看起來像這樣:
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);
}
}
而另一類(一個我數據綁定):
public class Situation
{
public Address ObjAddress;
public string OtherInformation;
}
現在,當我有一個數據綁定控制,例如
<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>
爲什麼我的ToString()類在該字段爲Eval時被調用?當eval運行時,我只是獲取類型名稱。