52

How do I loop through data in WebForms like I do in ASP.NET MVC? For instance, in MVC, this is as simple as:

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

What would the code behind look like?

Or, can I add an MVC project to a WebForms application so that I can use MVC functionality, instead?

4

3 に答える 3

85

リピータを使用するのではなく、<% %>および<%= %>タグを使用して、同様の 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 -->
于 2013-02-06T15:41:56.300 に答える
13

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

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

コードビハインド:

cdcatalog.DataSource = yourData;
cdcatalog.DataBind();
于 2013-02-06T15:40:33.913 に答える
2

Repeater任意の種類の有効なDataSource( SqlDataSourceEntityDataSourceObjectDataSource) オブジェクトでa を使用できます。

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

....

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

...

于 2013-02-06T15:41:44.240 に答える