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?
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 -->
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();
Vous pouvez utiliser un Repeater
avec n'importe quel type d'objet DataSource
(SqlDataSource
, EntityDataSource
, ObjectDataSource
) valide:
....
<asp:Repeater id="someRep" runat="server" DataSourceID="YourDataSource">
<ItemTemplate>
<tr>
<td><%# Eval("PropertyName") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
...