2

私はかなりトリッキーな状況にあります。以下のオブジェクト構造を返すSOAPデータソースにバインドされたASP:Repeaterを使用しています。

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を次のように使用することで、「Time」などのすべての第1層変数に簡単にアクセスできます。

  <%# 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 %>

このメソッドを使用すると、nullをチェックできます。

<%# IF(Ctype(Container.DataItem, ReturnedSOAPObjectRecord).RouteName IsNot Nothing, Ctype(Container.DataItem, ReturnedSOAPObjectRecord).RouteName.Stop.Name, "No Stop" %>
于 2012-10-15T22:46:18.253 に答える