web-dev-qa-db-fra.com

Comment parcourir les données dans WebForms comme dans MVC

Comment parcourir les données dans WebForms comme je le fais dans ASP.NET MVC? Par exemple, dans MVC, c'est aussi simple que:

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

À quoi ressemblerait le code derrière?

Ou, puis-je ajouter un projet MVC à une application WebForms pour pouvoir utiliser la fonctionnalité MVC à la place?

43
user1477388

Plutôt que d'utiliser un répéteur, vous pouvez simplement parcourir la liste d'une manière similaire au type MVC en utilisant le <% %> et <%= %> Mots clés.

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

Tant que la propriété que vous parcourez est accessible à partir de la page aspx/ascx (par exemple déclarée protégée ou publique), vous pouvez la parcourir. Il n'y a pas d'autre code dans le code derrière nécessaire.

<% %> évaluera le code et <%= %> affichera le résultat.

Voici l'exemple le plus élémentaire:

Déclarez cette liste au niveau de votre classe dans votre code derrière:

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

C'est juste une simple liste de chaînes, donc dans votre fichier 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

Dans WebForm, vous pouvez utiliser le contrôle Repeater:

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

En code derrière:

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

Vous pouvez utiliser un Repeater avec n'importe quel type d'objet DataSource (SqlDataSource, EntityDataSource, ObjectDataSource) valide:

  1. Définir la source de données
  2. Référencez le DataSource dans votre Reperater

....

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

...

2
Mithrandir