我有一个相当棘手的情况。我正在使用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”?
答案 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" %>