在Object中访问ASP.NET C#Eval数据绑定对象

时间:2012-10-15 22:32:19

标签: c# .net data-binding

我有一个相当棘手的情况。我正在使用ASP:Repeater,它绑定到SOAP数据源,返回下面的对象结构。

Path: Array[6]
0: Object
   Direction: "Departing"
   Message: ""
   Operator: "myciti"
   RouteColor: "#a7a9ac"
   RouteName: "Airport"
       Stop: Object
           Name: "JFK"
           Location: Object
   Name: "Airport"
   __proto__: Object
   Time: "07:10"
   Type: ""
   Vehicle: ""

我可以通过使用Eval轻松访问所有第一层变量,例如“时间”:

  <%# Eval("Time")%>

我的问题是如何从ASPX页面继续使用EVAL访问嵌套对象?例如,如何获得此数组中“Stop”对象的“Name”值,其值为“JFK”?

2 个答案:

答案 0 :(得分:4)

尝试:      <%# Eval("Stop.Name")%>

答案 1 :(得分:2)

Eval只是通过名称获取属性的快捷方式。在某些情况下,它不会帮助你。例如,如果您的对象RouteName有时返回null,该怎么办。

您需要使用:

<%# Container.DataItem.RouteName.Stop.Name %>

Container.DataItem是一个对象,因此您可以从中访问任何属性。

更好的方法是将该对象转换为更有意义的实例:

<%# Ctype(Container.DataItem, ReturnedSOAPObjectRecord).RouteName.Stop.Name %>

此方法使您能够检查空值。

<%# IF(Ctype(Container.DataItem, ReturnedSOAPObjectRecord).RouteName IsNot Nothing, Ctype(Container.DataItem, ReturnedSOAPObjectRecord).RouteName.Stop.Name, "No Stop" %>