web-dev-qa-db-ja.com

MVCのようなWebFormsでデータをループする方法

ASP.NET MVCのようにWebFormsのデータをループするにはどうすればよいですか?たとえば、MVCでは、これは次のように簡単です。

<table>
    @foreach (var myItem in g)
    { 
        @<tr><td>@MyItem.title<td></tr>
    }
</table>

背後のコードはどのように見えますか?

または、MVC機能を使用できるように、MVCプロジェクトをWebFormsアプリケーションに追加できますか?

43
user1477388

リピーターを使用するのではなく、<% %>および<%= %>タグを使用して、同様のMVCタイプの方法でリストをループすることができます。

<table>
  <% foreach (var myItem in g) { %>
    <tr><td><%= myItem.title %></td></tr>
  <% } %>
</table>

ループしているプロパティがaspx/ascxページからアクセス可能である限り(たとえば、保護またはパブリックとして宣言されている場合)、ループすることができます。コードビハインドに必要な他のコードはありません。

<% %>はコードを評価し、<%= %>は結果を出力します。

最も基本的な例を次に示します。

コードビハインドでクラスレベルでこのリストを宣言します。

public List<string> Sites = new List<string> { "StackOverflow", "Super User", "Meta SO" };

それは単なる文字列のリストなので、aspxファイルで

<% foreach (var site in Sites) { %> <!-- loop through the list -->
  <div>
    <%= site %> <!-- write out the name of the site -->
  </div>
<% } %> <!--End the for loop -->
71
Brandon

WebFormでは、Repeaterコントロールを使用できます。

<asp:Repeater id="cdcatalog" runat="server">
   <ItemTemplate>
       <td><%# Eval("title")%></td>
   </ItemTemplate>
</asp:Repeater>

コードビハインド:

cdcatalog.DataSource = yourData;
cdcatalog.DataBind();
11
phnkha

Repeaterを、あらゆる種類の有効なDataSourceSqlDataSourceEntityDataSourceObjectDataSource)オブジェクトと共に使用できます。

  1. データソースを定義する
  2. ReperaterでDataSourceを参照します

....

 <asp:Repeater id="someRep" runat="server" DataSourceID="YourDataSource">
       <ItemTemplate>
          <tr>
                <td><%# Eval("PropertyName") %></td> 
          </tr>
    </ItemTemplate>
    </asp:Repeater>

...

2
Mithrandir