How to loop through data in WebForms like in MVC

Rather than use a repeater, you can just loop through the list in a similar MVC type way using the <% %> and <%= %> tags.

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

As long as the property you're looping through is acessible from the aspx/ascx page (e.g. declared as protected or public) you can loop through it. There is no other code in the code behind necessary.

<% %> will evaluate the code and <%= %> will output the result.

Here is the most basic example:

Declare this list at your class level in your code behind:

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

That's just a simple list of strings, so then in your aspx file

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

In WebForm you can use Repeater control:

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

In code behind:

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

You can use a Repeater with any sort of valid DataSource (SqlDataSource, EntityDataSource, ObjectDataSource) object:

  1. Define the DataSource
  2. Reference the DataSource in your Reperater

....

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

...