2012-01-06 11 views
0

私はUIパターンフレームワークを使用しています。フレームワークを使用すると、クライアントのモデルの形でデータにアクセスできます(MVCに似ています)<%# Model.Widget %>。私はEvalステートメントを使用してFormViewコントロールにバインドします。モデル内のコレクションを順序どおりリストに反復する方法を理解しようとしています。モデル内のコレクションを順序付けられていないリストに反復する方法は?

ウィジェットのプロパティの1つが文字列配列の場合、どのようにウィジェットアイテムのプロパティを反復処理できますか?これは今まで私が持っているものです:

<ul style="list-style-type: none; margin-left: 0px"> 
    <% var services = Eval("Services") as List<string>; // Getting exception here 
     foreach (var service in services) 
     { %> 
      <li><%= service %></li>  
    <% } %> 
</ul> 

明らかに、これは間違っています。 InvalidOperationExceptionが発生しました。なぜなら、コントロールのItemTemplate内のアイテムではなく、Evalを使って変数にデータバインディングしているからです。

ありがとうございます!

答えて

0

ここでは、どのように私はそれがリピータコントロールを使用して仕事を得たです。

<ul> 
    <asp:Repeater ID="rptServices" runat="server" 
     DataSource='<%# Eval("Services") %>'> 
      <ItemTemplate> 
        <li><%# Container.DataItem %></li>   
      </ItemTemplate> 
    </asp:Repeater> 
</ul> 

バインドされたコントロールのEvalメソッドを使用してプロパティをDataSourceとして割り当てます。次に、RepeaterのDataItemをItemTemplate内のListItemに割り当てます。

0

私は数ヶ月前にWebformsMVPビットで実験しましたが、私の知る限り

foreach (var service in Model.Services) 

の線に沿って何かを覚えることができるように動作するはずです。ここではEval関数は必要ないと思う。

+0

これはほとんどの状況で機能しますが、コントロールは結論に結びついています。要約はサービスの要約でstring []型のプロパティです。だから、あなたが提案したように 'Model.Summary'を反復することができますが、' Model.Summary.Services'にアクセスする必要がありますので、サービスを繰り返し処理できます。おそらくDatabinder.EvalとContainer.DataItemの構文を使用する方法があると確信しています...それを行う方法がわかりません。私はそれを乱し続けます。ありがとう。 – Rich

関連する問題