How to loop through data in WebForms like in MVC

42,480

Solution 1

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

Solution 2

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();

Solution 3

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>

...

Share:
42,480
user1477388
Author by

user1477388

Authored open-source project PHP One, an MVC framework for PHP designed like Microsoft's ASP.NET MVC. https://github.com/DominicArchual/Php-One

Updated on July 09, 2022

Comments

  • user1477388
    user1477388 almost 2 years

    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?