TOC

This article has been localized into Italian by the community.

Razor:

Loops

Il "Looping" è una tecnica di programmazione molto utile che può essere utilizzata con molto profitto nel vostro codice Razor. Il "Looping" vi consente di ripetere una azione e/o un output per uno specificato numero di ripetizioni. Per esempio per inviare in output gli elementi di una lista, come vedremo negli esempio di questo articolo.

Esistono diversi tipi di "loops" in C# e sono tutti disponibili nel codice Razor. Andiamo ad esaminarli, usando la stessa semplice sorgente di dati: una lista di nomi che trasformeremo una una lista HTML non ordinata.

La sorgente dei dati

Iniziamo definendo una lista di nomi all'inizio della View come mostrato qui di seguito:

@{
List<string> names = new List<string>()
{
"John Doe",
"Jane Doe",
"Joe Doe",
"Jenna Doe",
"Doggy Doe"
};
}

Ora siete pronti a testare i vari tipi di "loops"

Il loop "for"

Il loop "for" è particolarmente utile nelle situazioni in cui dovete tenere traccia della posizione in cui vi trovate nel processo di "loop". Potete infatti sempre accedere alla variabile di conteggio (chiamata i in questo esempio):

<ul>
@for (int i = 0; i < names.Count; i++)
{
<li>@names[i]</li>
}
</ul>

Il loop "foreach"

Il loop "foreach" è sicuramente il più facile da usare per un lavoro come il seguente:

<ul>
@foreach (string name in names)
{
<li>@name</li>
}
</ul>

Il loop "while"

Il loop "while" è più adatto per altri scenari rispetto a questo ma potete comunque utilizzarlo:

<ul>
@{
int counter = 0;
}
@while(counter < names.Count)
{
<li>@names[counter++]</li>
}
</ul>

Il loop "do...while"

Esattamente come per il loop "while", questo loop è più importante per altri lavori. La differenza tra il "while" loop ed il "do...while" loop è nel momento in cui la condizione è valutata. Per il loop "while", la condizione è valutata prima di eseguire la prima ripetizione, il che potrebbe portare alla condizione in cui il loop non è mai eseguito, al contrario la condizione di un loop "do...while" è valutata dopo la prima ripetizione, il che significa che il loop verrà eseguito almeno una volta.

<ul>
@{
counter = 0;
}
@do
{
<li>@names[counter++]</li>
} while (counter < names.Count);
</ul>

break/continue

In comune a tutti questi tipi di loop c'è la possibilità di interrompere ovvero uscire completamente dal loop (break) oppure di continuare con la prossima ripetizione (continue) abbandonando l'esecuzione della ripetizione corrente. Ecco quindi una versione riveduta dell'esempio con il loop "for" dove utilizziamo una istruzione if per essere sicuri che il loop venga interrotto dopo che sono stati inviati in output un massimo di tre nomi:

<ul>  
@for (int i = 0; i < names.Count; i++)  
{  
<li>@names[i]</li>  
@if(i >= 2)  
{  
<li>...and so on</li>  
break;  
}  
}  
</ul>

Riepilogo

Come avete visto, eseguire dei loop con il codice Razor è praticamente identico a come viene fatto in C#. Potete persino entrare ed uscire dal markup HTML come illustrato negli esempi. Questo articolo serve sopratutto per illustrare come sia facile eseguire dei loop su dei dati con Razor. Se volete approfondire la teoria dietro ad ogni tipologia di loop, dovreste consultare un manuale C#


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!