This article is currently in the process of being translated into French (~99% done).
Loops
Les boucles sont une technique de programmation extrêmement puissante qui peut aussi vous être bénéfique depuis votre code Razor. Les boucles vous permettent de répéter une action et/ou une sortie pour un nombre d'itérations donné - par exemple pour afficher des éléments d'une liste, comme nous pouvons le voir dans les exemples de cet article.
Il y a plusieurs types de boucles en C# et ils sont tous disponibles dans votre code Razor. Allons les découvrir tous, avec la même chose, une simple source de données : une liste de noms, que nous allons transformer en une liste HTML désordonnée.
La source de données
Commencez par définir une liste de noms au début de votre fichier de Vue, comme ceci :
@{
List<string> names = new List<string>()
{
"John Doe",
"Jane Doe",
"Joe Doe",
"Jenna Doe",
"Doggy Doe"
};
}
Vous êtes maintenant prêt à tester les différents types de boucle.
La boucle "for"
La boucle for est à utiliser dans les cas où vous avez besoin de suivre votre progression dans le processus de bouclage, car vous pouvez toujours accéder à la variable compteur (appelée i dans cet exemple) :
<ul>
@for (int i = 0; i < names.Count; i++)
{
<li>@names[i]</li>
}
</ul>
La boucle "foreach"
La boucle foreach est certainement la plus simple pour une tâche comme celle-ci :
<ul>
@foreach (string name in names)
{
<li>@name</li>
}
</ul>
La boucle "while"
La boucle while est mieux adaptée à d'autres cas d'utilisation que celui-ci, mais vous pouvez toujours l'utiliser :
<ul>
@{
int counter = 0;
}
@while(counter < names.Count)
{
<li>@names[counter++]</li>
}
</ul>
La boucle "do...while"
Presque comme la boucle while, celle-elle est plus pertinente pour d'autres types de tâches en boucle. La différence entre les deux est le moment où la condition est évaluée. Pour la boucle while, la condition est évaluée avant d'entrer dans la première itération, ce qui signifie qu'il peut ne jamais boucler. La condition d'un do...while est évaluée après la première itération, ce qui signifie qu'il peut boucler au minimum une fois.
<ul>
@{
counter = 0;
}
@do
{
<li>@names[counter++]</li>
} while (counter < names.Count);
</ul>
Le break/continue
Le point commun à toutes ces boucles est bien entendu leur capacité à se casser (quitter complètement la boucle) et continuer (arrêter l'itération actuelle et sauter à la prochaine). Voici un exemple de la boucle for où nous utilisons une instruction if pour être sûr de quitter la boucle après avoir affiché 3 noms :
<ul>
@for (int i = 0; i < names.Count; i++)
{
<li>@names[i]</li>
@if(i >= 2)
{
<li>...and so on</li>
break;
}
}
</ul>
Résumé
Comme vous pouvez le voir, le bouclage sur des données avec le code Razor est exactement le même qu'en C#. Vous pouvez toujours basculer entre le balisage HTML et le code Razor, comme illustré dans les exemples ci-dessus. Cet article sert principalement à illustrer la facilité de boucler sur des données avec Razor - si vous voulez en savoir plus à propos de la théorie présente derrière chaque boucle, merci de consulter notre tutoriel C#.