2

我有一个相当棘手的情况。我正在使用一个 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 的嵌套对象?例如,我将如何获得该数组中值为“JFK”的“Stop”对象的“Name”值?

4

2 回答 2

5

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

于 2012-10-15T22:42:47.440 回答
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" %>
于 2012-10-15T22:46:18.253 回答